linux下刪除指定檔案之外的其他檔案
一、 linux下刪除檔案和資料夾常用命令如下:
刪除檔案: rm file www.2cto.com
刪除資料夾: rm -rf dir
需要注意的是, rmdir 只能夠刪除 空資料夾。
二、刪除制定檔案(夾)之外的所有檔案呢?
1、方法1,比較麻煩的做法是:
複製需要保留的檔案到其他資料夾,然後將該目錄刪除, 然後將需要保留的移動 回來。
mv keep ../ #保留檔案(夾) keep
rm -rf * #刪除當前資料夾裡的所有檔案
mv ../keep ./ #將原來的東西移動回來
2、方法2,需要在當前資料夾中進行:
rm -rf !(keep) #刪除keep檔案之外的所有檔案
rm -rf !(keep1 | keep2) #刪除keep1和keep2檔案之外的所有檔案
3、方法3,當前資料夾中結合使用grep和xargs來處理檔名:
ls | grep -v keep | xargs rm #刪除keep檔案之外的所有檔案
說明: ls先得到當前的所有檔案和資料夾的名字, grep -v keep,進行grep正則匹配查詢keep,-v引數決定了結果為匹配之外的結果,也就是的到了keep之外的所有檔名,然後 xargs用於從 標準輸入獲得引數 並且傳遞給後面的命令,這裡使用的命令是 rm,然後由rm刪除前面選擇的檔案。
好處:使用了grep來正規表示式來匹配檔案名字,可以一次保留多個檔案,從而進行更加準確的處理。
4、方法4,使用find命令代替ls,改進方法3從而能夠處理制定資料夾的檔案:
find ./test/ | grep -v keep | xargs rm #刪除當前test資料夾中keep檔案之外的所有檔案
說明,用grep而不用find -name選取名字,因為find選取名字時比較麻煩,對正規表示式支援不夠,無法排除指定檔名。
5、方法5,直接使用find命令刪除其他檔案:
find ./ -name '[^k][^e][^e][^p]*' -exec rm -rf {} \; #刪除keep以外的其他檔案。
find ./ -name '[^k][^e][^e][^p]*' | xargs rm -rf #刪除keep以外的其他檔案。推薦!
說明:上面第二行的**效率高些,原因在於刪除多個檔案時 -exec會啟動多個程序來處理,而xargs會啟動乙個rm程序來處理。
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...
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...