utte36 / 78

findとxargsで条件に合うファイルをまとめて処理する

ホームディレクトリの cache ディレクトリ以下から、名前が .tmp で終わるファイルをすべて削除してください。.tmp 以外のファイルは残してください。ファイル名に空白を含むものもあります。

解説
find cache -name '*.tmp' -print0 | xargs -0 rm

xargs は、標準入力から受け取った文字列を、別のコマンドの引数にして実行します。rm や ls のように標準入力を読まないコマンドに、find の結果を渡したいときに使います。

xargs は空白や改行で入力を区切るので、my notes.tmp のような名前は2つに割れてしまいます。find -print0 はファイル名を NUL 文字で区切って出力し、xargs -0 はそれを NUL で区切って受け取るので、安全に処理できます。find cache -name '*.tmp' -delete や -exec rm {} + でも同じことができます。

使うコマンド

関連する問題