rm反向刪除的幾種方法


關鍵詞:rm  刪除 反向

 

參考:

http://blog.sina.com.cn/s/blog_67e34ceb01014930.html

http://bbs.csdn.net/topics/390077765

http://www.douban.com/group/topic/37732676/

http://www.myexception.cn/linux-unix/389690.html

 

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的左邊)

ls:查看當前目錄下所有的文件,使用grep命令過濾一下 grep -v "aa" 就是找出字符串中不帶“aa”的。

整體再順一下:列出文件名不帶“aa”串的文件,然后刪除他們。OK。
其實說起來簡單,當時我也做了好長時間,因為以前沒怎么接觸grep,因此一開始我想到的辦法是使用正則表
達式,但是在做的過程中突然發現了grep使個不錯的東西,因此就使用了。


上面的命令使刪除帶有“aa”串的文件,那如果我只想留下文件aa呢?很簡單

zhou@zhou:~/LinuxC/file/test$ rm `ls | grep -v "^aa$" `
在aa前面加上^,后面加上$表示結束符的意思,這個就是完全匹配了。
好了,就這么多。但願以后能用到這個有用的命令
 

 
 
 
如上圖:我想刪除除目錄linuxcast和目錄xuefu以外的所有其它文件或目錄。。。 
 
ls *|grep -v linuxcast|grep -v xuefu |xargs rm -rf

或者

$ shopt extglob $ rm -rf !(linuxcast|xuefu) 

 


如何反向選擇文件並刪除

案例:一個文件夾下我想刪除 除了abc文件 之外的所有文件,命令怎么寫(linux下)

------解決方案--------------------

find . -maxdepth 1 -type f -not -name 'abc' -exec rm '{}' ';' 

------解決方案--------------------

ls | grep -v abc | xargs -i rm -rf {}

 


案例:一個文件夾下我想刪除 除了abc文件 之外的所有文件,命令怎么寫(linux下)

find . -maxdepth 1 -type f -not -name 'abc' -exec rm '{}' ';'

或者

ls | grep -v abc | xargs -i rm -rf {}

或者

mv abc /tmp rm *
mv /tmp/abc .


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM