删除除一个子目录之外的所有子目录

删除除一个子目录之外的所有子目录

假设当前目录下有多个子目录,其中一个叫做A。

如何使用 Bash 删除除 A 之外的所有子目录?

答案1

Bash 已扩展通配符(首先测试,然后删除回显):

shopt -s extglob
echo rm -rf !(A)

答案2

find -maxdepth 1 -type d -not -name A -not -name "." -exec rm -ir {} \;

答案3

关于什么:

mv A /tmp/
rm * -rf
mv /tmp/A .

这避免了其他命令中拼写错误所带来的“可怕”后果。

请注意运行上面的 rm * -rf 命令时不要位于根 (/) 文件夹中。

答案4

我通常通过首先运行一个 ls 命令来做到这一点。我不是使用 unix 机器,但是类似这样:

ls -lda“[^A]”

一旦正确完成,将其通过管道传输到命令

ls -lda“[^A]”| xargs rm -rf

如果我的正则表达式有误,请随意编辑上面...

相关内容