Linux rm 刪除指定文件外的其他文件 方法匯總
一、Linux下刪除文件和文件夾常用命令如下:
刪除文件: rm file
刪除文件夾: rm -rf dir
需要注意的是, rmdir 只能夠刪除 空文件夾.
二、刪除制定文件(夾)之外的所有文件呢?
1、方法1,比較麻煩的做法是:
複製需要保留的文件到其他文件夾,然後將該目錄刪除, 然後將需要保留的移動 回來.
mv keep ../ #保留文件(夾) keep
rm -rf * #刪除當前文件夾里的所有文件
mv ../keep ./ #將原來的東西移動回來
2、方法2,當前文件夾中結合使用grep和xargs來處理文件名:
ls | grep -v keep | xargs rm #刪除keep文件之外的所有文件
說明: ls先得到當前的所有文件和文件夾的名字, grep -v keep,進行grep正則匹配查找keep,-v參數決定了結果為匹配之外的結果,也就是的到了keep之外的所有文件名,然後 xargs用於從 標準輸入獲得參數 並且傳遞給後面的命令,這裡使用的命令是 rm,然後由rm刪除前面選擇的文件.
好處:使用了grep來正則表達式來匹配文件名字,可以一次保留多個文件,從而進行更加準確的處理.
3、方法3,使用find命令代替ls,改進方法3從而能夠處理制定文件夾的文件:
find ./test/ | grep -v keep | xargs rm #刪除當前test文件夾中keep文件之外的所有文件
說明,用grep而不用find -name選取名字,因為find選取名字時比較麻煩,對正則表達式支持不夠,無法排除指定文件名.
4、方法4,直接使用find命令刪除其他文件:
find ./ -name '[^k][^e][^e][^p]*' -exec rm -rf {} \; #刪除keep以外的其他文件.
find ./ -name '[^k][^e][^e][^p]*' | xargs rm -rf #刪除keep以外的其他文件.推薦!
關於find 執行命令的效率和借用xargs啟動的命令效率的比較,詳情請參考:http://www.linuxsir.org/main/?q=node/137
Linux文件查找命令find,xargs詳述 http://www.linuxsir.org/main/?q=node/137
[火星人 ] linux rm 總結已經有488次圍觀