假设当前目录下有多个子目录,其中一个叫做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
如果我的正则表达式有误,请随意编辑上面...