我有一个目录,其中充满了具有相同结构的其他几个目录,所以它看起来像这样
top/A/Output/platform/..
top/B/Output/platform/..
top/C/Output/platform/..
等等。我想从级别开始top
,删除目录下面的所有目录platform
,这样我最终会得到
top/A/Output
top/B/Output
top/C/Output
有人可以推荐我一个命令吗?我在 rhel7 上,bash 4.1.2
编辑:
我有很多“二级”目录,其名称比单个字母更复杂,抱歉应该更明确地指出
答案1
rm -rf top/?/Output/platform
或者,如果二级目录可能超过一个字符(示例中为 A、B 或 C):
rm -rf top/*/Output/platform
答案2
请man find
参阅更多选项,例如正则表达式模式:
find top -type d -name platform -print0 | xargs -0 rm -rf
答案3
您可以使用这种方式查找:
find top -path 'top/*/Output/platform' -delete
请注意,这将删除以点开头的文件和目录。
以下命令不会删除以点开头的文件和目录,因为 shell 在替换星号时会跳过它们:
rm top/*/Output/platform