删除文件中包含字符串的文件 \- Linux cli

新手上路,请多包涵

我正在尝试根据通过 Linux CLI 在文件中查找电子邮件地址来删除错误的电子邮件。

我可以用

find . | xargs grep -l email@example.com

但我不知道如何从那里删除它们,因为下面的代码不起作用。

rm -f | xargs find . | xargs grep -l email@example.com

原文由 Spechal 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 475
2 个回答

为了安全起见,我通常将 find 的输出通过管道传输到 awk 之类的东西,并创建一个批处理文件,每行都是“rm 文件名”

这样,您可以在实际运行之前对其进行检查,并手动修复任何使用正则表达式难以处理的奇怪边缘情况

find . | xargs grep -l email@example.com | awk '{print "rm "$1}' > doit.sh
vi doit.sh // check for murphy and his law
source doit.sh

原文由 Martin Beckett 发布,翻译遵循 CC BY-SA 4.0 许可协议

您的命令的解决方案:

 grep -l email@example.com * | xargs rm

或者

for file in $(grep -l email@example.com *); do
    rm -i $file;
    #  ^ prompt for delete
done

原文由 ajreal 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题