ファイルの一覧表示と削除の最適化された方法

ファイルの一覧表示と削除の最適化された方法

.php、.xml ファイルを一覧表示して削除する必要があります。そのためにfindコマンドを使用しています。

リストへ: find . -type f -name \*.php -print0

削除するには: find . -type f -name \*.php -print0 | xargs -0 rm -r

2 回実行しますfind。最初のコマンドの結果を保存し、2 番目に再利用することは可能ですか?

ありがとう。

答え1

find . -type f -name '*.php' -print0 | tee list | tr \\0 \\n
xargs -r0 rm -f < list

これは、削除を決定する前にリストを確認したい場合を想定しています。確認したくない場合は、次のようにするだけです。

find . -name '*.php' -type f -print -delete

(、、は-print0標準-deleteではありません-r-0、GNU実装ではサポートされています)

また、 は比較的安全ですが、最初の解決策では、とコマンドfind -deleteを実行する間の間に、誰かがディレクトリの名前を機密領域へのシンボリックリンクに変更し、意図しないファイルを削除させられる可能性があることにも注意してください。 を2 回実行し、2 回目に を使用すると、これを回避できます。findxargsfind-delete

答え2

ファイルが必要なので.php、コマンドは次のようになります。.xmlfind

find . \( -name '*.php' -o -name '*.xml' \) -type f -print -exec rm {} +

ファイルのチャンクごとに 1 回だけ使用するように指示+します。 を使用した場合は、ファイルごとに1 つのコマンドを実行します。findrm\;rm

関連情報