删除包含某些字符的文件

删除包含某些字符的文件

我的目录中有一个文件列表,我需要删除每个包含 0 或 7 的文件。我觉得我需要使用 grep 但我不太确定。有任何想法吗?

答案1

您要做的是根据特定的条件测试评估您的文件,并根据条件测试的结果对每个文件执行操作。这就是该命令的确切目的find

这是一个便携式(符合 POSIX 标准) 命令删除内容包含“0”或“7”的常规文件:

find . -type f -exec grep -q '[07]' {} \; -exec rm {} +

注意递归地搜索当前目录。

如果这不是您想要的,您可以检查主数据库是否-maxdepth可用(在这种情况下,您也可以使用主数据库-delete;POSIX 都没有指定):

find . -maxdepth 1 -type f -exec grep -q '[07]' {} \; -delete

或者,您可以应用以下中给出的技术:

答案2

grep -l '[07]' DirToYourFiles/* | xargs rm -f

grep -l表示仅列出文件名

[07]表示 0 或 7

xargs让他们成为命令。

假设文件名不包含空格、换行符、单引号、双引号或反斜杠字符。借助 GNU 实用程序,您可以通过以下方式使其更加可靠:

grep -lZ '[07]' DirToYourFiles/* | xargs -r0 rm -f

相关内容