关键词: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 .