使用 find 和 xargs 删除带有 rm 的文件

新手上路,请多包涵

当我做

rm file.txt

或者

rm *.txt

系统会提示我输入每个文件,因为我没有指定 -f 选项 rm

但是当我这样做时:

 find . -type f -name '*.txt' | xargs rm

文件在没有确认的情况下被删除。

这背后的逻辑是什么?是否可以在某些文档中找到原因?我无法解释为什么会这样。

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

阅读 1.1k
2 个回答

您将 rm 命令的别名设置为“rm -i”。因此,如果您直接调用命令,如

rm file.txt

或者

rm *.txt

别名将被扩展。如果您将使用 xargs 调用它,如

find . -type f -name '*.txt' | xargs rm

rm 作为一个简单的字符串参数传递给 xargs,稍后由 xargs 调用,无需 shell 的别名替换。您的别名可能在 ~/.bashrc 中定义,以防您想删除它。

原文由 Harald Gliebe 发布,翻译遵循 CC BY-SA 3.0 许可协议

你可以使用这个简单的命令来解决你的问题

find . -type f -name '*.txt' -delete

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

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