方法一. 刪除指定文件夾外的其他所有文件夾命令:
ls |grep -v dir | xargs rm -rf
方法二. 刪除指定文件夾外的其他所有文件夾命令:
查看當前文件夾下有哪些文件和子文件夾,當看到倆個文件夾和多個文件,需求是只保留 public 這個文件夾 其他的文件夾和文件 統(tǒng)統(tǒng)都刪除,如下圖所示,只要一個命令:
ls | grep -v public | awk '{system("rm -rf "$1)}'
如果只保留common 這個文件夾 需要命令 改為:
ls | grep -v common | awk '{system("rm -rf "$1)}'
三. 其他方法(沒有驗證)
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參數(shù)決定了結果為匹配之外的結果,也就是的到了keep之外的所有文件名,然后 xargs用于從 標準輸入獲得參數(shù) 并且傳遞給后面的命令,這里使用的命令是 rm,然后由rm刪除前面選擇的文件。
好處:使用了grep來正則表達式來匹配文件名字,可以一次保留多個文件,從而進行更加準確的處理。
4、方法4,使用find命令代替ls,改進方法3從而能夠處理制定文件夾的文件:
find ./test/ | grep -v keep | xargs rm #刪除當前test文件夾中keep文件之外的所有文件
說明,用grep而不用find -name選取名字,因為find選取名字時比較麻煩,對正則表達式支持不夠,無法排除指定文件名。文章來源:http://www.zghlxwxcb.cn/news/detail-483653.html
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進程來處理。文章來源地址http://www.zghlxwxcb.cn/news/detail-483653.html
四. 參考鏈接:
- linux 刪除指定文件夾外的其他所有文件夾
- Linux之不刪除指定文件夾,其他都刪(文件和文件夾)
到了這里,關于linux 刪除指定文件夾外的其他所有(文件)文件夾的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!