Linux 下rm + grep 命令刪除除去指定檔案的剩餘所有檔案上一篇 / 下一篇 2010-07-08 10:17:38 / 個人分類:liunx相關查看( 185 ) / 評論( 0 ) / 評分( 0 / 0 )今天下午有個任問我如何刪除一個目錄下的除了想要的檔案之外的所有檔案。我想了想grep和rm配合一下不正好麼。於是經過查閱資料得出了一條命令:過程如下。首先在一個目錄下:zhou@zhou:~/LinuxC/file/test$ ls1 23sdfwe 88888888 aabb ag ghdda
mmm2 3 aaaaaaaa abc asdg llllllll wwwwwzhou@zhou:~/LinuxC/file/test$然後我想刪除除了包含字串aa外所有的檔案,也就是想留下aabb,aaaaaaaa,這兩個檔案,其他的全部刪除下面是我的命令:zhou@zhou:~/LinuxC/file/test$ rm `ls | grep -v "aa"`然後查看一下:zhou@zhou:~/LinuxC/file/test$ lsaaaaaaaa aabbzhou@zhou:~/LinuxC/file/test$所以了,成功了。簡單的解釋一下那條命令吧:rm
刪除後面指定的檔案`ls | grep -v "aa" ` 記得外面是反引號(反引號的位置就在標準鍵盤的數字1的左邊),ls:查看目前的目錄下所有的檔案,使用grep命令過濾一下 grep -v "aa" 就是找出字串中不帶“aa”的。整體再順一下:列出檔案名稱不帶“aa”串的檔案,然後刪除他們。OK。其實說起來簡單,當時我也做了好長時間,因為以前沒怎麼接觸grep,因此一開始我想到的辦法是使用Regex,但是在做的過程中突然發現了grep使個不錯的東西,因此就使用了。上面的命令使刪除帶有“aa”串的檔案,那如果我只想留下檔案aa呢?很簡單zhou@zhou:~/LinuxC/file/test$
rm `ls | grep -v "^aa$" `在aa前面加上^,後面加上$表示結束符的意思,這個就是完全符合了。好了,就這麼多。但願以後能用到這個有用的命令