關鍵詞: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的左邊),
整體再順一下:列出文件名不帶“aa”串的文件,然后刪除他們。OK。
其實說起來簡單,當時我也做了好長時間,因為以前沒怎么接觸grep,因此一開始我想到的辦法是使用正則表
達式,但是在做的過程中突然發現了grep使個不錯的東西,因此就使用了。
上面的命令使刪除帶有“aa”串的文件,那如果我只想留下文件aa呢?很簡單
zhou@zhou:~/LinuxC/file/test$ rm `ls | grep -v "^aa$" `
在aa前面加上^,后面加上$表示結束符的意思,這個就是完全匹配了。
好了,就這么多。但願以后能用到這個有用的命令

ls *|grep -v linuxcast|grep -v xuefu |xargs rm -rf
或者
如何反向選擇文件並刪除
案例:一個文件夾下我想刪除 除了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 .