gpt4 book ai didi

shell - rm -rf/base-dir-path/*/work 与/base-dir-path/*/*/work 不同

转载 作者:行者123 更新时间:2023-12-02 08:26:30 27 4
gpt4 key购买 nike

如果我想从 linux/unix 中的给定根目录中删除具有给定名称的所有子目录,您会认为您可以发出如下命令:

rm -rf /base-dir-path/*/work 

但是,在搜索任何名为“work”的子目录时,上述命令只会进入 1 个目录深度。为了实现我想要的,我最终用额外的 '*/' 重复相同的命令,直到 rm 返回 'rm: No match.', EG:
rm -rf /base-dir-path/*/*/*/work

有没有办法获得像 rm 这样的命令匹配 /在它的通配符搜索中,我只需要发出一个通配符 *特点?

最佳答案

在 tcsh 6.18.00 或更新版本上:

set globstar
rm -rf /base-path/path/**/work

在 bash 4.0 或更新版本上:
shopt -s globstar
rm -rf /base-dir/path/**/work

在 ksh 上:
set -o globstar # or set -G
rm -rf /base-dir/path/**/work

在 zsh 上:
rm -rf /base-dir/path/**/work

或者,使用 find符合 2006 年修订的 POSIX:
find /base-dir/path -type d -name work -exec rm -rf -- '{}' +

如果您没有 find-exec ... {} + ,那么您可能没有 xargs -0要么,并且需要以低效的方式做到这一点,以确保安全:
find /base-dir/path -type d -name work -exec rm -rf -- '{}' ';'

关于shell - rm -rf/base-dir-path/*/work 与/base-dir-path/*/*/work 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31730495/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com