find でコマンドを実行する

 しばらく使わないと忘れるのでメモ。

 ディレクトリ内を検索する find コマンドについてです。

 私がよく使うのはどこにファイルがあるかを知るために、find コマンドでパスを表示させるオプションです。

$ find . -name 'foo.bar'

 これでカレントディレクトリより下にある foo.bar というファイルのパスが表示されます。

 たまに、見つけたファイルに対してなにか処理をしたいときがあります。例えば不要なので削除したい時があります。この時は -exec オプションをつけますが、対象ファイルの指定方法を忘れます。{} が対象ファイルに置き換わりますが、コマンドの終わりを表す ; を最後に付ける必要があります。

 次のようになります。

$ find . -name 'foo.bar' -exec rm -f {} \;

 ; はシェルが解釈しないように \ でエスケープする必要があります。これで、見つかったファイルが削除されます。

Memo

Posted by sirius