linux系统中如何删除某些文件或者某一类以外的所有文件

1、创建测试文件:

[root@centos7 test]# touch {a..f}.txt
[root@centos7 test]# ls
a.txt  b.txt  c.txt  d.txt  e.txt  f.txt

 

2、删除b.txt文件以外的所有文件

method1:

[root@centos7 test]# rm !("b.txt")
[root@centos7 test]# ls
b.txt

 

method2:

[root@centos7 test]# touch {a..f}.txt
[root@centos7 test]# ls
a.txt  b.txt  c.txt  d.txt  e.txt  f.txt
[root@centos7 test]# find ./ -not -name "b.txt" -exec rm -f {} \;
rm: cannot remove ‘./’: Is a directory
[root@centos7 test]# ls
b.txt

 

method3:

[root@centos7 test]# touch {a..f}.txt
[root@centos7 test]# ls
a.txt  b.txt  c.txt  d.txt  e.txt  f.txt
[root@centos7 test]# ls | grep -v "b.txt" | xargs rm -f
[root@centos7 test]# ls
b.txt

 

3、删除 b.txt和c.txt以外的文件

[root@centos7 test]# touch {a..f}.txt
[root@centos7 test]# ls
a.txt  b.txt  c.txt  d.txt  e.txt  f.txt
[root@centos7 test]# rm !("b.txt"|"c.txt")
[root@centos7 test]# ls
b.txt  c.txt

 

[root@centos7 test]# touch {a..f}.txt
[root@centos7 test]# ls
a.txt  b.txt  c.txt  d.txt  e.txt  f.txt
[root@centos7 test]# find ./ -type f -not -name "b.txt" -not -name "c.txt" -exec rm -f {} \;
[root@centos7 test]# ls
b.txt  c.txt

 

[root@centos7 test]# touch {a..f}.txt
[root@centos7 test]# ls
a.txt  b.txt  c.txt  d.txt  e.txt  f.txt
[root@centos7 test]# ls | grep -E -v "b.txt|c.txt" | xargs rm -f
[root@centos7 test]# ls
b.txt  c.txt

 

4、删除某一类文件之外的所有文件

删除txt文件之外的所有文件

[root@centos7 test]# touch {a..d}.txt {a..d}.csv {a..d}.png
[root@centos7 test]# ls
a.csv  a.png  a.txt  b.csv  b.png  b.txt  c.csv  c.png  c.txt  d.csv  d.png  d.txt
[root@centos7 test]# rm !(*.txt)
[root@centos7 test]# ls
a.txt  b.txt  c.txt  d.txt

 

[root@centos7 test]# touch {a..d}.txt {a..d}.csv {a..d}.png
[root@centos7 test]# ls
a.csv  a.png  a.txt  b.csv  b.png  b.txt  c.csv  c.png  c.txt  d.csv  d.png  d.txt
[root@centos7 test]# find ./ -type f ! -name "*.txt" -exec rm -f {} \;
[root@centos7 test]# ls
a.txt  b.txt  c.txt  d.txt

 

5、删除txt和csv文件以外的所有文件

[root@centos7 test]# touch {a..d}.txt {a..d}.csv {a..d}.png
[root@centos7 test]# ls
a.csv  a.png  a.txt  b.csv  b.png  b.txt  c.csv  c.png  c.txt  d.csv  d.png  d.txt
[root@centos7 test]# rm !(*.txt|*.csv)
[root@centos7 test]# ls
a.csv  a.txt  b.csv  b.txt  c.csv  c.txt  d.csv  d.txt

 

[root@centos7 test]# touch {a..d}.txt {a..d}.csv {a..d}.png
[root@centos7 test]# ls
a.csv  a.png  a.txt  b.csv  b.png  b.txt  c.csv  c.png  c.txt  d.csv  d.png  d.txt
[root@centos7 test]# find ./ -type f ! -name "*.txt" ! -name "*.csv" -exec rm -f {} \;
[root@centos7 test]# ls
a.csv  a.txt  b.csv  b.txt  c.csv  c.txt  d.csv  d.txt

 

posted @ 2021-06-25 00:06  小鲨鱼2018  阅读(414)  评论(0编辑  收藏  举报