xargs -0 rmを記録する方法は?

xargs -0 rmを記録する方法は?

特定の拡張子を持つファイルを再帰的に見つけて削除する必要がある簡単な方法があります。そのため、ファイルを見つけて削除してパイプする構文がありますが、xargs -0 rm削除されたファイルのログを生成できないようです。

私が今まで持っているもの:

find /var/www/html -type f -regex ".*/.*\.(png|jpg)" -print0 |xargs -0 rm

答え1

rmファイルの削除は通常自動的に行われます。削除されたファイルを表示するログを生成するには、このオプションを追加します-v。したがって、以下を交換してください。

xargs -0 rm

そして:

xargs -0 rm -v >log

答え2

find標準出力にファイル名を書き込んでいる間は、単独でファイルを削除できます。

find /var/www/html -type f -regex ".*/.*\.\(png\|jpg\)" -delete -print >logfile

メモ:-deleteオプションの順序が-print重要です。 2番目のオプションは、最初のオプションがtrueを返す場合にのみ適用されます。つまり、最初の-deleteオプションがファイルの削除に失敗した場合、その名前は標準出力に印刷されません。先頭に置くと、ファイルを実際に削除できるか-printどうかに関係なく、ファイル名を標準出力に入れます。-delete

ノート2:私のシステムユーティリティでデフォルトで正規表現が機能するようにするには、角かっこと縦線をエスケープする必要がありましたfind。または、たとえば、-regextypeとして指定できますposix-egrep。とにかく、まずfindオプションなしでコマンドを試して、ファイルが-delete正しく見つかったことを確認することをお勧めします。

find /var/www/html -type f -regex ".*/.*\.\(png\|jpg\)" -print

関連情報