一般 rm -rf
的用法是:
# 删除当前目录所有文件
rm -rf ./*
但要是想删除当前目录除了 aa.txt
以外的其他所有文件呢,该怎么办呢?
命令如下:
rm -rf !(aa.txt)
然而这个时候可能会报错:
bash: !: event not found
这是因为系统没有开启通配符功能,解决办法也很简单,去开启通配符功能:
shopt -s extglob
查看是否开启通配符功能:
shopt -s
看 extglob
是否是 on
,这样继续上面删除命令就行了
另外教在 Bash 脚本中中的使用方法,
如果是直接把 rm -rf !(aa.txt)
塞到脚本里,执行的时候会报错:
syntax error near unexpected token `(’
解决办法是要在 rm 命令前面添加 shopt -s extglob
,就像下面这样:
#!/bin/bashshopt -s extglob
rm -rf !(aa.txt)