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 @   小鲨鱼2018  阅读(429)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2020-06-25 yum install epel-release 报错 解决 记录
点击右上角即可分享
微信分享提示