引用 grep 匹配的文件

引用 grep 匹配的文件

grep 的手册页显示

"grep -lZ outputs a zero byte after each file name instead of the usual newline"

但就我而言,输出中的某些文件仍然需要引号。为了使其发挥作用:

/usr/bin/grep -rlZ 'Not Found'|xargs -0 rm

-w文件名中的the-webkit-stuff.html不应被解释为 rm 的选项。所以我目前正在这样做:

/usr/bin/grep -rlZ 'Not Found'|\
xargs -0 -I{} find . -type f -name {} -print0 | xargs -0 rm

这效率不高。有没有一个 grep 版本有“更好的-print0”?

你会怎么做?

答案1

你可以使用

/usr/bin/grep -rlZ 'Not Found' | xargs -0 -r rm --

其中--阻止实用程序将任何内容解释为选项,或者,

/usr/bin/grep -rlZ 'Not Found' . | xargs -0 -r rm

这将导致grep所有文件的路径名都带有前缀./.选项-r使xargsxargs 不是如果没有收到输入grep(即如果没有文件包含该字符串),则运行该命令。

我个人可能会使用find

find . -type f -exec grep -qF 'Not found' {} ';' -delete

(我认为它做了同样的事情:递归删除包含字符串的文件Not found

相关内容