在管理中经常想删除除了某个文件之外的所有文件?应该如何实现呢?比如我的目录如下:
[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
此命令只对当前终端有效,换个终端或者退出之后,需要重新执行才能有效。。。