Bash 查找并删除多个参数目录
假设我在名为Bash 查找并删除多个参数目录,bash,find,ls,Bash,Find,Ls,假设我在名为lol的文件夹中有3个目录.git、.hg和.svn 我如何找到并删除所有这些 以下仅对最后一个(.svn)执行此操作: E:这也可以用ls来完成,但不能没有shopt-s globstar(因为我不是用zsh): E2:另一种解决方案是: $ find lol -type d -name .git -o -name .hg -o -name .svn | xargs rm -rf 尝试改用-exec选项 find lol -depth -type d \( -name .git
lol
的文件夹中有3个目录.git
、.hg
和.svn
我如何找到并删除所有这些
以下仅对最后一个(.svn
)执行此操作:
E:这也可以用ls
来完成,但不能没有shopt-s globstar
(因为我不是用zsh
):
E2:另一种解决方案是:
$ find lol -type d -name .git -o -name .hg -o -name .svn | xargs rm -rf
尝试改用
-exec
选项
find lol -depth -type d \( -name .git -o -name .hg -o -name .svn \) -exec rm -r '{}' \;
是的,我确实需要
-r
,因为这些是目录,但仍然只删除最后一个。这样更好,但不打印查找:`lol/.hg':没有这样的文件或目录
错误,所有被删除的文件或目录,你应该在最后添加类似2>&-
的内容。@Det如果目录不存在,这是什么?我想是这样的:P.您可以使用-depth
根本不获取这些错误。否则它将被删除,然后由find再次处理。@mariux很好,我将添加它。
$ find lol -type d -name .git -o -name .hg -o -name .svn | xargs rm -rf
find lol -depth -type d \( -name .git -o -name .hg -o -name .svn \) -exec rm -r '{}' \;