linux shell下除了某個檔案外的其他檔案全部刪除的命令
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 反向刪除)
1 23sdfwe 88888888 aabb ag ghdda mmm
2 3 aaaaaaaa abc asdg llllllll wwwww
[email protected]:~/LinuxC/file/test$
然後我想刪除除了包含字串aa外所有的檔案,也就是想留下aabb,aaaaaaaa,這兩個檔案,其他的全部刪除
下面是我的命令:
[email protected]:~/LinuxC/file/test$ rm `ls | grep -v"aa"`
[email protected]
aaaaaaaa aabb
[email protected]:~/LinuxC/file/test$
所以了,成功了。
簡單的解釋一下那條命令吧:rm 刪除後面指定的檔案
`ls | grep -v "aa" ` 記得外面是反引號(反引號的位置就在標準鍵盤的數字1的左邊), ls:檢視當前目錄下所有的檔案,使用grep命令過濾一下grep -v "aa" 就是找出字串中不帶“aa”的。
整體再順一下:列出檔名不帶“aa”串的檔案,然後刪除他們。OK。
其實說起來簡單,當時我也做了好長時間,因為以前沒怎麼接觸grep,因此一開始我想到的辦法是使用正則表達式,但是在做的過程中突然發現了grep使個不錯的東西,因此就使用了。
上面的命令使刪除帶有“aa”串的檔案,那如果我只想留下檔案aa呢?很簡單
[email protected]:~/LinuxC/file/test$rm `ls | grep -v"^aa$" `
在aa前面加上^,後面加上$表示結束符的意思,這個就是完全匹配了。
好了,就這麼多。但願以後能用到這個有用的命令 轉自:http://blog.sina.com.cn/s/blog_67e34ceb01014930.html
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 shell下除了某個檔案外的其他檔案全部刪除的命令
# rm -rf !(file1|file2) Linuxrm刪除指定檔案外的其他檔案方法彙總 一、Linux下刪除檔案和資料夾常用命令如下: 刪除檔案: rm file 刪除資料夾: rm -rf dir 需要注意的是, rmdir 只能夠刪除 空資料夾。 二、刪除制定檔案(夾)之外的所有檔案呢? 1、
LINUX Shell 下求兩個檔案交集和差集的辦法
轉載自https://blog.csdn.net/autofei/article/details/6579320 假設兩個檔案FILE1和FILE2用集合A和B表示,FILE1內容如下: a b c e d a FILE2內容如下: c d
linux 查詢指定資料夾下包含某個字元的所有檔案,並去重輸出到檔案
記錄實驗樓的"查詢指定檔案"比賽目標 將 /etc 目錄下所有內容中包含 shiyanlou 字串的檔案的完整路徑都寫入 /home/shiyanlou/output 檔案中 /home/shiyanlou/output 檔案中每一行包含一個檔案,
linux shell下獲取cpu溫度
ima wid src pre images 兩個 alt cat light cpu0:cat /sys/class/thermal/thermal_zone0/temp cpu1:cat /sys/class/thermal/thermal_zone1/temp
linux shell下16進制 “uxxxx” unicode to UTF-8中文
city 使用 orm tac 字符 3.1 方法 查詢接口 var 問題出現背景: 項目中有個通過ip獲取歸屬地城市需求,我是直接通過新浪的ip歸屬查詢接口來獲取的。我使用的是shell腳本調用 RESULT=$(curl -s ‘http://int.dpool
Linux shell下計算字符串的哈希值
adc 換行 刪掉 \n 發現 tro hang code shell 今天無意發現在Linux上計算md5哈希值和在MacOS不太一樣: Linux [root@lab ~]# echo ‘123456‘ | md5sum f447b20a7fcbf53a5
laravel專案在ngnix環境中,除了首頁外其他路由404
今天在laravel專案中寫路由,但是是404 我用的是ngnix,最後解決方案如下 location / { index index.php index.html index.htm ; try_files&
sublime在linux系統下編譯C++的sublime.build檔案
{ "shell_cmd": "g++ -std=c++11 \"${file}\" -o \"${file_path}/${file_base_name}\"", "file_rege
Linux shell 輸入/輸出重定向—/dev/null檔案
個人分類: Linux/Unix相關 如果希望執行某個命令,但又不希望在螢幕上顯示出輸出的結果,那麼可以將輸出重定向到/dev/null: $ command > /dev/null /dev/null是一個特殊的檔案,寫入到它的內容都會被丟棄;如果嘗試
linux 下如何通過ssh到其他機器然後執行命令?
在Linux下經常寫shell指令碼,當然少不了需要在各臺機器上執行命令了。 假如現在我要在10.2.226.201上寫shell並且執行這個shell指令碼。可是這個指令碼需要在10.2.226.202和10.2.226.203上執行一下命令。如何實現呢? 摸索了幾種方法
Linux程式設計(Linux shell程式設計的例子:批量處理檔案)
各位看官們,咱們今天還是接著上一回的內容,列舉具體的例子給大家。閒話休說,言歸正轉。 各位看官們,在實際的工作中經常需要批量處理檔案,比如批量刪除檔案等。咱們今天就通過例子來說明 如何批量操作檔案
Linux-shell下的作業管理
作業管理 舉例來說,我們在登陸 bash 後, 想要一邊複製檔案、一邊進行資料搜尋、一邊進行編譯,還可以一邊進行 vi 程式撰寫! 當然我們可以重複登陸那六個文字介面的終端機環境中,不過,能不能在一個 bash 內達成? 當然可以啊!就是使用 job control 啦!
Linux環境下java後臺獲取外網IP
專案測試時有測試ip,之後給分配公網ip.那麼怎麼獲取公網ip呢 通過一個網路代理去獲取對應的資訊,返回的是一個Json,需要建立一個類接收,之後在取出來 程式碼 接收的類 import jav
Linux-C下C/S架構例項,實現檔案傳輸功能
/*server_func.h*/ #ifndef SERVER_H #define SERVER_H #include<stdio.h> #include<stdlib.h> #include<string.h> #include
Linux shell 下的複製和貼上(Copy & Paste Operation on Linux shell)
1. Copy:CTRL+SHIFT+C Paste:CTRL+SHIFT+V 2. 左鍵選中 單擊滑鼠中鍵,或SHIFT+INSERT 即貼上到命令列 3. gconftool-2 -t str -s /apps/gnome-terminal/keybindings/
Linux環境下執行matlab以及執行m檔案
Usage: matlab [-h|-help] | [-n | -e] [-arch | v=variant | v=arch/variant] [-c licensefile] [-display Xdis
如何指定tomcat下的某個專案的具體檔案為網站的首頁面
比如首頁為: webapps/test/main.jsp 1.修改$tomcat/conf/server.xml檔案。 在server.xml檔案中,有一段如下: …… <engine name="Catalina" defaultHost="localhost"&
Linux環境下原始碼編譯和執行常用的兩個命令:pkg-config和ldconfig
最近一段時間在研究linux伺服器叢集的相關知識,打算基於corosync和pacemaker來搭建一個linux高可用叢集, 通過編譯原始碼包來了解其依賴的動態庫,在編譯的過程中遇到一些問題,總結一些,供大家以後參考(很通用哦): 我們
【VP9】libvpx在Windows和Linux平臺下的編譯和vp9編解碼器的命令列引數
=================================================================== 參考:https://www.cnblogs.com/endv/p/6866947.html &
linux下資料夾的建立、複製、剪下、重新命名、清空、刪除命令和查詢
在home目錄下有wwwroot目錄,wwwroot下有sinozzz目錄,即/home/wwwroot/sinozzz 一、目錄建立 在/home/wwwroot目錄下新建一個sinozzz123的資料夾 mkdir /home/wwwroot/sinozzz123 二、目錄複製