一般 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/bash

shopt -s extglob
rm -rf !(aa.txt)