linux shell下除了某個檔案外的其他檔案全部刪除的命令
Linux反選刪除檔案
最簡單的方法是
# shopt -s extglob (開啟extglob模式)
# rm -fr !(file1)
如果是多個要排除的,可以這樣:# rm -rf !(file1|file2)
Linuxrm刪除指定檔案外的其他檔案方法彙總
一、Linux下刪除檔案和資料夾常用命令如下: 刪除檔案: rm file刪除資料夾: 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程式來處理。
關於find 執行命令的效率和借用xargs啟動的命令效率的比較,詳情請參考:http://www.linuxsir.org/main/?q=node/137
Linux檔案查詢命令find,xargs詳述 http://www.linuxsir.org/main/?q=node/137 本文轉載自:http://blog.sina.com.cn/s/blog_70ffb5c501011rrk.html
rm刪除除去指定檔案的剩餘所有檔案 (rm 反向刪除)
zhou@zhou:~/LinuxC/file/test$ ls
1 23sdfwe 88888888 aabb ag ghdda mmm
2 3 aaaaaaaa abc asdg llllllll wwwww
zhou@zhou:~/LinuxC/file/test$
然後我想刪除除了包含字串aa外所有的檔案,也就是想留下aabb,aaaaaaaa,這兩個檔案,其他的全部刪除
下面是我的命令:
zhou@zhou:~/LinuxC/file/test$ rm `ls | grep -v"aa"`
zhou@zhou:~/LinuxC/file/test$ ls
aaaaaaaa aabb
zhou@zhou:~/LinuxC/file/test$
所以了,成功了。
簡單的解釋一下那條命令吧:rm 刪除後面指定的檔案
`ls | grep -v "aa" ` 記得外面是反引號(反引號的位置就在標準鍵盤的數字1的左邊),
轉自:http://blog.sina.com.cn/s/blog_67e34ceb01014930.html1 23sdfwe 88888888 aabb ag ghdda mmm
2 3 aaaaaaaa abc asdg llllllll wwwww
zhou@zhou:~/LinuxC/file/test$
然後我想刪除除了包含字串aa外所有的檔案,也就是想留下aabb,aaaaaaaa,這兩個檔案,其他的全部刪除
下面是我的命令:
zhou@zhou:~/LinuxC/file/test$ rm `ls | grep -v"aa"`
zhou@zhou:~/LinuxC/file/test$ ls
aaaaaaaa aabb
zhou@zhou:~/LinuxC/file/test$
所以了,成功了。
簡單的解釋一下那條命令吧:rm 刪除後面指定的檔案
`ls | grep -v "aa" ` 記得外面是反引號(反引號的位置就在標準鍵盤的數字1的左邊),
ls:檢視當前目錄下所有的檔案,使用grep命令過濾一下grep
-v "aa" 就是找出字串中不帶“aa”的。
整體再順一下:列出檔名不帶“aa”串的檔案,然後刪除他們。OK。
其實說起來簡單,當時我也做了好長時間,因為以前沒怎麼接觸grep,因此一開始我想到的辦法是使用正則表
達式,但是在做的過程中突然發現了grep使個不錯的東西,因此就使用了。
上面的命令使刪除帶有“aa”串的檔案,那如果我只想留下檔案aa呢?很簡單
zhou@zhou:~/LinuxC/file/test$rm `ls | grep -v"^aa$" `
在aa前面加上^,後面加上$表示結束符的意思,這個就是完全匹配了。
好了,就這麼多。但願以後能用到這個有用的命令
整體再順一下:列出檔名不帶“aa”串的檔案,然後刪除他們。OK。
其實說起來簡單,當時我也做了好長時間,因為以前沒怎麼接觸grep,因此一開始我想到的辦法是使用正則表
達式,但是在做的過程中突然發現了grep使個不錯的東西,因此就使用了。
上面的命令使刪除帶有“aa”串的檔案,那如果我只想留下檔案aa呢?很簡單
zhou@zhou:~/LinuxC/file/test$rm `ls | grep -v"^aa$" `
在aa前面加上^,後面加上$表示結束符的意思,這個就是完全匹配了。
好了,就這麼多。但願以後能用到這個有用的命令
linux 刪除其他檔案
http://zhidao.baidu.com/link?url=uvHfrb3kSnM_8p5ILhZyc39U0h3md-Ncrm3iaygeYTLU-zjthNBlqO674VulVGTnPiNcl2nj7wo5vn08N4481_
求教 linux centos我想刪除某目錄中檔名不符合"*20100330*"這樣規則的檔案應該怎麼刪除?假設目錄名為myTest且為當前目錄的下一級目錄,使用如下命令即可:
cd ./myTest && rm `ls | grep -v '20100330'` && cd .. 進入myTest目錄,刪除檔案後返回當前目錄。 grep的-v參數列示反向選擇。 一般使用rm刪除檔案的時候會有確認提示,如果不要確認,直接強制刪除,可以使用rm的-f引數。
其他1條回答
find ./ -type f \! -name "*20100330*" -exec rm -rf {} \;如何反向選擇檔案並刪除
http://bbs.csdn.net/topics/390077765
案例:一個資料夾下我想刪除 除了abc檔案 之外的所有檔案,命令怎麼寫(linux下)
find . -maxdepth 1 -type f -not -name 'abc' -exec rm '{}' ';'
ls | grep -v abc | xargs -i rm -rf {}
rm -f `ls | grep -v abc`
如果檔案很多的情況下,不要用這種方法……
要用2樓的方法……
mv abc /tmp
rm *
mv /tmp/abc .
反向顯示檔案
使用ls命令僅僅顯示當前目錄不包括.的檔案.
ls加grep過濾的方式:ls -al | grep -v '\.'(ls --ignore=.* -al也可實現)。
在開啟extglob模式下(預設是開啟的),ls也可以實現,而且更加靈活.
shopt -u extglob #關閉
shopt -s extglob #開啟
ls -al !(*.*)
ls -al -d !(*.*)
相關文章
- Linux 刪除除了某個檔案之外的所有檔案Linux
- linux 下vim中關於刪除某段,某行,或全部刪除的命令Linux
- linux shell 命令下批量新增檔案的字尾 和批量刪除 擁有某字尾的檔案Linux
- linux下批量刪除find出來的某類檔案Linux
- linux的刪除檔案命令和強制刪除命令Linux
- Linux刪除檔案命令Linux
- Linux下批量刪除空檔案或者刪除指定大小的檔案Linux
- Linux下刪除昨天的檔案Linux
- linux下rm命令刪除檔名中包含特殊字元的檔案Linux字元
- Linux 某個目錄下查詢檔案大小並排序(du),特定檔案刪除(find)Linux排序
- git刪除歷史中的某個大檔案Git
- linux下使用rm命令刪除一個有大量檔案的目錄Linux
- 解決刪除Linux下刪除檔案過多而受shell限制的問題Linux
- Linux下面批量刪除某種型別的檔案Linux型別
- [Linux shell]查詢某目錄下檔案是否包含某個字串Linux字串
- find 命令刪除某類或某段時間前的檔案指令碼指令碼
- 【Linux】linux下刪除/清空資料夾/檔案命令Linux
- Linux 命令列刪除指定副檔名檔案Linux命令列
- android,如果某個檔案存在就刪除Android
- Linux刪除指定字尾名檔案的命令Linux
- linux 刪除問題 一次刪除多個目錄下的相同副檔名的檔案Linux
- linux下刪除目錄及其子目錄下某種型別檔案Linux型別
- linux 下刪除亂碼檔案Linux
- Linux rm(刪除檔案/目錄) 命令Linux
- 以前的windows安裝檔案可以刪除嗎 windowsold檔案刪除了有影響嗎Windows
- Linux shell 根據時間批量刪除指定資料夾下的檔案Linux
- Linux下使用lsof恢復刪除的檔案Linux
- linux下刪除指定日期前的檔案Linux
- 歸檔模式下的表空間檔案無法用命令刪除模式
- Linux檔案的複製、刪除和移動命令Linux
- 搜尋檔案下包含某個字串的檔案字串
- 在linux裡rm 命令怎麼刪除多個檔案Linux
- 檔案的刪除
- rm命令刪除檔案時排除特定檔案
- linux 下按照時間刪除檔案Linux
- Linux rm命令:刪除檔案或目錄Linux
- linux rm 命令(刪除檔案和目錄)Linux
- Linux 命令列 rm 無法刪除檔案Linux命令列