Linux 刪除除了某個檔案之外的所有檔案

天府雲創發表於2018-01-25

linux如何用命令實現刪除除了 a之外的所有檔案 的幾種方法


不知你是否想過在Linux命令列上,如何實現刪除除了某個檔案之外的所有檔案?

如abc資料夾下有a、b、c三個檔案,如何一行命令刪除b和c,不刪除a。有位童鞋在工作經常有此需求,本文將介紹其他童鞋提供的實現方法。

其中rm -f  !(a) 最為方便。如果保留a和b,可以執行rm -f !(a|b)來實現。

不過一般bash中執行後會提示

“-bash: !: event not found ” 可以通過執行shopt -s extgolb來解決。如下:

[root@localhost /]# mkdir abc

[root@localhost /]# cd abc

[root@localhost abc]# touch a b c

[root@localhost abc]# ls

a  b  c

[root@localhost abc]# rm -f !(a)

-bash: !: event not found

[root@localhost abc]# shopt -s extglob

[root@localhost abc]# rm -f !(a)

[root@localhost abc]# ls

a

[root@localhost abc]# touch b c d

[root@localhost abc]# rm -f !(a|b)

[root@localhost abc]# ls

a  b

另外也可以使用下面的方法:

[root@localhost abc]# ls

a  b  c

[root@localhost abc]# ls |grep -v a |xargs rm -f 

[root@localhost abc]# ls

a

其他場景也可以使用其他方法
法一、find . -name "*" ! -name "a" -exec rm {} /;
法二、rm $(ls | awk '!/a.c/') 或者rm `ls | awk '!/a.c/'`


相關文章