5 种Linux下 删除除指定文件外的所有文件的方法

本文将会讲述Linux系统下通过rm命令删除除指定文件外的其它所有的文件的5中不同的方法。 当我们在当前目录下或者指定目录下,想删除同类文件或者符合同一模式匹配规则的文件,但需要排除其中的某个或多个文件,只是简单的使用rm命令是无法实现。所以我们需要结合其它的linux命令来实现我们的删除文件操作。

下面我们通过5中不同的方法来介绍删除指定文件外的文件的方法:

方法一: 可以先将需要排除的文件,从当前目录中移动到一个临时目录里,然后执行rm命令将其与的文件删除,最后再将刚才移动走的文件从新拷贝回来。

执行的命令如下:

#mv  保留文件 /tmp
# rm –rf  删除文件
#mv  /tmp/保留文件 .

方法二:使用Linux中的通配符来排除保留文件

我们可以使用Linux系统中的通配符 !来排除指定的文件,

比如我们要删除当前目录下除了fio1.txt文件的所有其它文件, 执行下面的命令:

#rm –i  !(fio1.txt)

命令输出如下:

root@devops:~/osetc# ls
fio1.txt  fio2.txt

root@devops:~/osetc# rm -i !(fio1.txt)
rm:是否删除普通文件 'fio2.txt'? y

root@devops:~/osetc# ls
fio1.txt

如果要删除当前目录下,除fio2.txt 和fio3.txt两个文件外的所有文件,可以执行下面的命令:

#rm -i   !(fio2.txt|fio3.txt)

命令输出如下:

root@devops:~/osetc# ls
fio1.txt  fio2.txt  fio3.txt

root@devops:~/osetc# rm -i !(fio2.txt|fio3.txt)
rm:是否删除普通文件 'fio1.txt'? y

root@devops:~/osetc# ls
fio2.txt  fio3.txt

方法三:  通过结合grep和xargs命令来删除指定文件外的所有文件

在linux里grep命令里有一个-v 的参数, 该参数可以排除通过grep命令输出的特定的文件,这样grep命令输出的其它文件就是需要删除的。 然后将输出结果过通过管道符传给xargs命令,将其删除。比如要删除除fio1.txt 文件的所有其它文件,执行下面命令:

#ls | grep –v fio1.txt | xargs rm

命令输出如下:

root@devops:~/osetc# ls
fio1.txt  fio2.txt  fio3.txt

root@devops:~/osetc# ls | grep -v fio1.txt | xargs rm
root@devops:~/osetc# ls
fio1.txt

方法四:改进方法三, 用find命令来替换ls命令,查找要删除的文件然后通过grep –v在过滤掉需要排除的文件

执行命令如下:

#find ./ | grep –v fio1.txt | xargs rm

方法五:通过fing命令结合xargs 或者其exec参数删除除指定文件外的文件

我们可以通过执行下面的两个find命令组合来删除除指定文件外的所有其它文件,比如要删除除fio1.txt外的所有其它文件,执行命令如下:

# find ./ ! -name fio1.* -exec rm -rf {} \;

或者

#find ./ ! –name fio1.*  | xargs rm –rf

99%的人还阅读了:

Leave a Reply