如何删除具有特定名称的文件夹

新手上路,请多包涵

在 Linux 中,如何删除嵌套在文件夹层次结构深处的具有特定名称的文件夹?

以下路径位于文件夹下,我想删除所有名为 a 的文件夹。

 1/2/3/a
1/2/3/b
10/20/30/a
10/20/30/b
100/200/300/a
100/200/300/b

我应该从父文件夹中使用什么 Linux 命令?

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

阅读 670
2 个回答

如果目标目录为空,使用find,只过滤目录,按名称过滤,执行rmdir:

 find . -type d -name a -exec rmdir {} \;

如果要递归删除其内容,请将 -exec rmdir {} \; 替换为 -delete-prune -exec rm -rf {} \; 。其他答案包括有关这些版本的详细信息,也应归功于它们。

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

使用 find for name “a” 并执行 rm 删除那些根据您的意愿命名的,如下:

 find . -name a -exec rm -rf {} \;

首先使用 ls 进行测试以列出:

 find . -name a -exec ls {} \;

为确保这只删除目录而不是普通文件,请使用“-type d”参数(如评论中所建议):

 find . -name a -type d -exec rm -rf {} \;

“{}”是对找到的每个文件“a”的替换 - 通过替换对每个文件执行 exec 命令。

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

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