
特定の拡張子を持つファイルを再帰的に見つけて削除する必要がある簡単な方法があります。そのため、ファイルを見つけて削除してパイプする構文がありますが、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