首页 > 解决方案 > zsh 删除路径中带有通配符的子目录

问题描述

对于以下目录结构:

└── bar
    ├── first
    │   └── tmp
    └── second
        └── tmp

我想删除所有tmp目录。然而,

rm -rf 'bar/*/tmp/'                                

不删除目录

ls bar/*/                                          

仍然返回两个tmp目录:

bar/first/:
tmp

bar/second/:
tmp

标签: wildcardzshfilepathrm

解决方案


你的问题是单引号

rm -rf 'bar/*/tmp/'          

如果你删除它们,你会没事的。

rm -rf bar/*/tmp

这样做的原因是(大多数,如果不是全部)shell 语言中的单引号表示包含的字符串将被完全视为一个字符串,这会忽略您尝试执行的通配符。


推荐阅读