目录
1、删除单个文件
2、强制删除文件,无需确认
3、删除文件夹
4、删除目录下全部文件,包括文件夹
5、删除全部文件,但保留readme.txt
6、删除全部文件,保留1.txt和2.txt
7、使用find + grep + xargs命令来删除
8、删除全部文件,保留1.txt和2.txt
rm是我们在Linux下删除文件经常用到的命令,但是有时候我们目录下有很多个文件想要删除,偏偏却要保留其中1个或几个文件,那怎么办呢?
1、删除单个文件
rm test.txt
2、强制删除文件,无需确认
rm -rf test.txt
3、删除文件夹
rm -rf test
4、删除目录下全部文件,包括文件夹
rm -rf *
5、删除全部文件,但保留readme.txt
rm -rf !(readme.txt)
正常情况下是全部文件被删除了,只留下了readme.txt,但是有时候我们的系统没配置好,可能会报错,例如下面这种:
这是因为我们的系统没有开启通配符功能,通过使用shopt -s命令查看通配符功能是否开启,
on表示已经开启:
发现没有 ,
执行完下面的命令来开启通配符功能:
shopt -s extglob
再次执行前面的命令就可以看到文件已经全部删除了,只保留了readme.txt
6、删除全部文件,保留1.txt和2.txt
rm -rf !(1.txt|2.txt)
7、使用find + grep + xargs命令来删除
上面我们说的都是直接用rm + !(叹号)来排除文件的,下面我们搞个高深一点的,用find + grep + xargs三个命令一起用
find * | grep -v readme.txt | xargs rm
8、删除全部文件,保留1.txt和2.txt
find * | grep -v '\(1.txt\|2.txt\)' | xargs rm
这里要特别留意,括号()跟括号内的竖线|需要添加\进行转义,否则会报错.
本文参考:Linux下使用rm删除文件,并排除指定文件(亲测可行)[通俗易懂] - 全栈程序员必看