zsh 删除路径中带有通配符的子目录

zsh delete subdirectory with wildcard in path

目录结构为:

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

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

rm -rf 'bar/*/tmp/'                                

不删除目录

ls bar/*/                                          

仍然返回两个 tmp 目录:

bar/first/:
tmp

bar/second/:
tmp

你的问题是单引号

rm -rf 'bar/*/tmp/'          

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

rm -rf bar/*/tmp

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