十五年测试老手,长期负责WEB\APP 项目测试,目前主要负责团队管理工作。

Linux 下rm + grep 命令删除除去指定文件的剩余所有文件

上一篇 / 下一篇  2010-07-08 10:17:38 / 个人分类:liunx相关

今天下午有个任问我如何删除一个目录下的除了想要的文件之外的所有文件。我想了想grep和rm配合一下不正好51Testing软件测试网 R&^Hz0AV&U
么。
k2y!x@j ] D0于是经过查阅资料得出了一条命令:过程如下。
)t$yr#Q#}(D _#m0首先在一个目录下:51Testing软件测试网7r {!uh2Q9} t8[#\Rw
51Testing软件测试网:[)[ACZV*B7Bta
zhou@zhou:~/LinuxC/file/test$ ls51Testing软件测试网 O'q%q6k1?
1  23sdfwe  88888888  aabb  ag    ghdda     mmm
4q*c0dut?:?02  3        aaaaaaaa  abc   asdg  llllllll  wwwww
6r/K[P5Oe5gd0zhou@zhou:~/LinuxC/file/test$
*[4l$v*Ha'J0
g J+XI5LoF9F0然后我想删除除了包含字符串aa外所有的文件,也就是想留下aabb,aaaaaaaa,这两个文件,其他的全部删除
8d P4K'J d4^t5Mp0下面是我的命令:51Testing软件测试网 C,k?1_,K H

W c"qmf,o9B0zhou@zhou:~/LinuxC/file/test$ rm `ls | grep -v "aa"`
9r_8B,kyO051Testing软件测试网 N#\kUpze%Q,i5K
然后查看一下:
1g?/sW/|051Testing软件测试网;`c K$jh9HQ c
zhou@zhou:~/LinuxC/file/test$ ls51Testing软件测试网4U \ w-LQ] c
aaaaaaaa  aabb
0mZp~h3N\#Y3q2me0zhou@zhou:~/LinuxC/file/test$51Testing软件测试网6k wD b!O?5I5E0Y$x\
51Testing软件测试网+v W J5J)F T
所以了,成功了。
8Ce2l{6K$m6N0简单的解释一下那条命令吧:rm 删除后面指定的文件
CqL0QM~b _0`ls | grep -v "aa" ` 记得外面是反引号(反引号的位置就在标准键盘的数字1的左边),ls:查看当51Testing软件测试网 y.UV O*ff6b3z
前目录下所有的文件,使用grep命令过滤一下 grep -v "aa" 就是找出字符串中不带“aa”的。51Testing软件测试网N&? D]8zS5v
51Testing软件测试网!X4S@)TV
整体再顺一下:列出文件名不带“aa”串的文件,然后删除他们。OK。51Testing软件测试网:P/l*Q}8K3~0TQ
51Testing软件测试网}JL@i
其实说起来简单,当时我也做了好长时间,因为以前没怎么接触grep,因此一开始我想到的办法是使用正则表51Testing软件测试网1Yt2Nb c*K;s
达式,但是在做的过程中突然发现了grep使个不错的东西,因此就使用了。51Testing软件测试网#z6VsR|9v3UM

9ugS(Okf.nx0上面的命令使删除带有“aa”串的文件,那如果我只想留下文件aa呢?很简单51Testing软件测试网!H Qu}2r\HL V,f6X

|+Y%J:E C3a/x0zhou@zhou:~/LinuxC/file/test$ rm `ls | grep -v "^aa$" `
Dx? h(p$^dO8F uM ^051Testing软件测试网.| BM/Sv4L+r
在aa前面加上^,后面加上$表示结束符的意思,这个就是完全匹配了。51Testing软件测试网L'W,l"?{W m\
51Testing软件测试网2Ms"@l;PFQ
51Testing软件测试网!st4A+_Sk
好了,就这么多。但愿以后能用到这个有用的命令
7y eEu`0

相关阅读:

TAG: grep rm

 

评分:0

我来说两句

Open Toolbar