【发布时间】:2014-09-19 23:51:11
【问题描述】:
我目前有以下生成文件列表的命令:
find . -type f | grep -i -f ./remove_list
此命令读取一个名为“remove_list”的文件,其中包含我想在 find 命令的输出中找到的术语列表(实际上是正则表达式)。
上面的命令工作正常,但我不明白现在如何删除找到的每个文件(尤其是其中一些包含空格)。
我想我可以这样做:
find . -type f -print0 | grep -i -f ./remove_list | xargs -0 rm
据我了解,-print0 和 -0 是处理带有空格的文件名所必需的,但现在当我尝试运行该命令时,我收到一条错误消息,指出“二进制文件(标准输入)匹配”。
如何从文件中读取多个(正则表达式)术语,以便它们可以用作 find 语句中的参数?
【问题讨论】:
-
那么
grep命令是否应该在find找到的路径名上运行?因为这就是它在这里所做的事情。 -
是的,“find”查找目录中的所有文件,“grep”然后查找 remove_list 文件并在“find”找到的文件中查找任何匹配项。我想删除任何匹配的内容。