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ファイルを削除し、同時にその名前を stdout に書き込むために、これを使用できます。

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

注記:-deleteオプションの順序は-print重要です。2 番目のオプションは、最初のオプションが true を返した場合にのみ適用されます。つまり、最初の-deleteオプションがファイルを削除できなかった場合、その名前は stdout に出力されません。最初のオプションを指定すると、実際にファイルを削除できた-printかどうかに関係なく、ファイル名が stdout に出力されます。-delete

注2: システムのユーティリティで正規表現をデフォルトで動作させるには、括弧と縦線をエスケープする必要がありましたfind。代わりに、たとえば-regextypeを指定することもできます。とにかく、最初にオプションなしでコマンドを試して、ファイルが正しく見つかるかどうか確認するposix-egrep価値はあります。find-delete

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

関連情報