findの結果の中からファイルを削除する

find/grep/xargsコマンドを使いこなす 業務で楽するためのUNIXテクニック集「検索」編:CodeZine

 Emacsを利用していると、テキストを保存する際に「ファイル名~」、ファイルを編集する際に「#ファイル名#」というバックアップファイルが作成されます。また、UnixLinuxプロセスが異常終了すると「core」ファイルが生成されます。これらのファイルを一度に削除したい場合には、次のように指定できます。

$ find . \( -name core -o -name '#*' -o -name '*~' \) -exec rm '{}' +

 「\(」と「コマンド」、「コマンド」と「\)」の間にはスペースを空ける必要があります。

 xargsコマンドを利用する場合は、次のように指定できます。

$ find . \( -name core -o -name '#*' -o -name '*~' \) -print0 | xargs -0 rm

 findコマンドの判別式「-o」は、「-or」でも構いません。

 なお、findコマンドの「-delete」アクションが利用できる場合は、次の方法が最も高速です。

$ find . \( -name core -o -name '#*' -o -name '*~' \) -delete

全力でメモ。「開発環境に.bakだの.orgを残すな〜!」と何度言っても聞かない奴がいるので、今度からこれを組み込んだ掃除shを作ることにします。