Answers:
Bash扩展了globbing(首先进行测试,然后删除回显):
shopt -s extglob
echo rm -rf !(A)
shopt | grep ext
您可以查看插件是否已启用。
就像是
find . -type d -not -name A -exec rm -ir {} \;
应该做。
编辑
真的应该是
find . -type d -maxdepth 1 -not -name A -exec rm -ir {} \;
防止find
递归到A以下。
我通常通过处理ls命令来首先实现此目的。我不是在UNIX机器上,而是类似:
ls -lda“ [^ A]”
一旦正确,将其通过管道传递给命令
ls -lda“ [^ A]” | xargs rm -rf
如果我的正则表达式有误,请随意在上方进行编辑...
不要像某些人使用-exec和rm那样使用find而不将-print0和-0传递给xargs。它将对带有空格或换行符的文件名感到困惑:
$ mkdir 'foo foo'
$ mkdir foo$'\n'foo
$ find . -type d -exec rm -ir {} \;
rm: cannot remove directory `.'
rm: remove directory `./foo\nfoo'? y
find: `./foo\nfoo': No such file or directory
rm: remove directory `./foo foo'? y
find: `./foo foo': No such file or directory
而是将find -print0与xargs -0,'-exec命令{} +'一起使用,或者-delete(如果您的查找支持)。