use*_*694 2 unix shell solaris wildcard tcsh
如果我想从linux/unix中的给定根目录中删除具有给定名称的所有子目录,您会认为您可以发出如下命令:
rm -rf /base-dir-path/*/work
Run Code Online (Sandbox Code Playgroud)
但是,在搜索名为"work"的任何子目录时,上面的命令只会深入1个目录.为了实现我想要的,我最终用额外的'*/'重复相同的命令,直到rm返回'rm:No match.',EG:
rm -rf /base-dir-path/*/*/*/work
Run Code Online (Sandbox Code Playgroud)
有没有办法在其通配符搜索中获得rm匹配的命令,/这样我只需要发出一个通配符*?
在tcsh 6.18.00或更新版本:
set globstar
rm -rf /base-path/path/**/work
Run Code Online (Sandbox Code Playgroud)
在bash 4.0或更新版本:
shopt -s globstar
rm -rf /base-dir/path/**/work
Run Code Online (Sandbox Code Playgroud)
在ksh上:
set -o globstar # or set -G
rm -rf /base-dir/path/**/work
Run Code Online (Sandbox Code Playgroud)
在zsh上:
rm -rf /base-dir/path/**/work
Run Code Online (Sandbox Code Playgroud)
或者,find符合2006年版POSIX:
find /base-dir/path -type d -name work -exec rm -rf -- '{}' +
Run Code Online (Sandbox Code Playgroud)
如果你没有findwith -exec ... {} +,那么你可能没有xargs -0,并且需要以低效的方式做到安全:
find /base-dir/path -type d -name work -exec rm -rf -- '{}' ';'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |