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

2021-06-22 17:13:47 字數 1128 閱讀 1603

不知你是否想過在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另乙個介紹方法

比如乙個目錄下有1,2,3,4,5這五個檔案,現在我需要刪除除了2以外的所有檔案,那麼我可以使用

find . ! -name 2 -exec rm -f {} \;

當然你還可以配合著 -maxdepth 來更精準的刪除了.

下面演示刪除的範圍僅限於當前目錄.

find . -maxdepth 1 ! -name 2 -exec rm -f {} \;

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

不知你是否想過在linux命令列上,如何實現刪除除了某個檔案之外的所有檔案?如abc資料夾下有a b c三個檔案,如何一行命令刪除b和c,不刪除a。有位童鞋在工作經常有此需求,本文將介紹其他童鞋提供的實現方法。其中rm f a 最為方便。如果保留a和b,可以執行rm f a b 來實現。不過一般ba...

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

不知你是否想過在linux命令列上,如何實現刪除除了某個檔案之外的所有檔案?如abc資料夾下有a b c三個檔案,如何一行命令刪除b和c,不刪除a。有位童鞋在工作經常有此需求,本文將介紹其他童鞋提供的實現方法。其中rm f a 最為方便。如果保留a和b,可以執行rm f a b 來實現。不過一般ba...

Linux下刪除出了某個檔案之外的其他檔案

例如有file1 file2 file3三個檔案,現在需要刪除除了file2之外的其他所有檔案 可以使用 rm f file2 命令來實現 lv lv root mkdir test lv lv root cd test lv test root touch file1 file2 file3 lv...