如何记录 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很重要。仅当第一个选项返回 true 时才会应用第二个选项,即如果第一个-delete选项无法删除文件,则其名称将不会打印到标准输出。如果你放在-print前面,那么它会将文件名放入标准输出,无论是否-delete真的可以删除该文件。

笔记2:我必须转义括号和垂直线才能使正则表达式默认与我的系统的findutil 一起工作。或者,您可以指定-regextypeposix-egrep,例如。无论如何,值得首先尝试find不带选项的命令-delete来检查它是否正确找到文件:

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

相关内容