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