假设我有一个目录,其下有文件和子目录。有些文件的内容中包含模式“^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