在管理中經常想刪除除了某個檔案之外的所有檔案?應該如何實現呢?比如我的目錄如下:

[root@localhost aa]# pwd /root/Desktop/aa [root@localhost aa]# ls 1.txt  2.txt  3.txt

我要刪除除了 2.txt 之外的所有檔案,具體方法如下:

[root@localhost aa]# rm -r !(2.txt) bash: !: event not found

提示錯誤,在 archlinux 上如上命令 可以使用。我現在的環境是 centos5.5
解決方法是新增 下變數

[root@localhost aa]# shopt -s extglob

然後再使用上面的命令則可以

[root@localhost aa]# rm -rf !(2.txt) [root@localhost aa]# ls 2.txt

如果是多個要排除的,可以這樣

[root@localhost aa]# ls 1.txt  2.txt  3.txt [root@localhost aa]# rm -rf !(1.txt|2.txt) [root@localhost aa]# ls 1.txt  2.txt

此命令只對當前終端有效,換個終端或者退出之後,需要重新執行才能有效。。。