goo blog サービス終了のお知らせ 

覚書

作業メモ

findコマンドでアクションを指定する ### -exec ###

2006-03-20 17:21:29 | シェル
「-exec」を使うと、検索されたファイルに対して任意のコマンドを実行出来ます。 検索されたファイルをその場で消してしまったり、バックアップメディアにコピーしたり、といったことも可能になります。 尤も、-exec の書式は、例のごとく分かり難いものなのですが。

-exec コマンド名 {} \;
-execに続けて、任意のコマンドを指定します。 続く「{}」は、 find(1) で検索されたファイル名で置き換えられます (*1) 。 最後の「\;」はコマンド列の終了を示すためのものです。 本来は「;」なのですが、シェルにとって「; 」は意味のある文字のため、 「\;」としてエスケープしなければなりません。 また、「;」は find(1) にとって独立した引数なので、 「(」や「)」と同様、やはり前後に空白を入れる必要があります。


例)検索されたファイルを即座に消す。
$ find / \! -name -log.txt "*.txt" -excec rm {} \;

例)カレントディレクトリ以下のファイルで、1ヶ月以上アクセスされなかったファイルのみを/home/backupというディレクトリに移動する。
$ find . \! -atime +30 -type f -exec mv {} /home/backup \;

例)/home/data/doc 以下のファイルのうち、サイズが100KBより大きい「*.txt」ファイルについて、文字数、単語数、行数を調べる。
$ find /home/data/doc -size +100k -type f -exec wc {} \;

参照