删除所有包含模式的文件

删除所有包含模式的文件

假设我有一个目录,其下有文件和子目录。有些文件的内容中包含模式“^File:”。

有没有什么方法可以使用 grep 和 bash 命令来删除包含此模式的文件?请注意,我说的是文件的内容,而不是文件名。

答案1

一个简单的管道查找就足够了(买家自慎,我还没有针对大量数据进行测试——请备份任何重要数据):

find /path/to/dir -type f -exec egrep -Il '^File:' {} \;|xargs rm -fv

答案2

grep -rlI "meow" * | xargs -I{} rm -v {} 

上述代码删除包含的文件meow

这还可以处理文件名中包含空格和其他字符的情况。xargs rm -f正如其他答案所建议的那样,单独使用将会失败。

答案3

以下是一句话。

grep -r "^File:" /path/to/directory | cut -d: -f1 | sort | uniq | xargs rm -f

相关内容