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

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

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

今天下午有个任问我如何删除一个目录下的除了想要的文件之外的所有文件。我想了想grep和rm配合一下不正好
c9qkNC(Z[!~_/\7|/]0么。51Testing软件测试网r9_WJ@G[
于是经过查阅资料得出了一条命令:过程如下。51Testing软件测试网 {)U-i QX:@${\5M
首先在一个目录下:
:IR;I7ZYs8o+u0
4]M Nj&A9z1]{0zhou@zhou:~/LinuxC/file/test$ ls51Testing软件测试网3MX(Z:K;IB1gm*Xd
1  23sdfwe  88888888  aabb  ag    ghdda     mmm51Testing软件测试网L;Zw:Vyq,ws
2  3        aaaaaaaa  abc   asdg  llllllll  wwwww51Testing软件测试网!qhNp^9|F]I+D
zhou@zhou:~/LinuxC/file/test$
uTRvJe5B3c0
P'U0o Rb X0然后我想删除除了包含字符串aa外所有的文件,也就是想留下aabb,aaaaaaaa,这两个文件,其他的全部删除51Testing软件测试网ZUs;Kr
下面是我的命令:
5F}R!j,VtE0
/Y0Up0`uDV0zhou@zhou:~/LinuxC/file/test$ rm `ls | grep -v "aa"`
v4}'M$W8Yk'T1@R051Testing软件测试网VAt^r1H*pe
然后查看一下:51Testing软件测试网2@.P~6_B#~
51Testing软件测试网x)e,LZ0yr.}
zhou@zhou:~/LinuxC/file/test$ ls51Testing软件测试网 ty'No xX'Z
aaaaaaaa  aabb
;t-nnr&kb+d,W6\YH)P |0zhou@zhou:~/LinuxC/file/test$
Iu_L lZ0
&w/u U:e3b I0所以了,成功了。
3w%YB{bK|3wYW0简单的解释一下那条命令吧:rm 删除后面指定的文件
loM2K(H,Kq)V0`ls | grep -v "aa" ` 记得外面是反引号(反引号的位置就在标准键盘的数字1的左边),ls:查看当
&T}'R8fn1as$?9_:L0前目录下所有的文件,使用grep命令过滤一下 grep -v "aa" 就是找出字符串中不带“aa”的。
9]%s6J/JyD Z%RN [a,]051Testing软件测试网A+g2cY%bE%}
整体再顺一下:列出文件名不带“aa”串的文件,然后删除他们。OK。
/o W*mdSPq!S0W0
6Q1}4|S"Q5ex/u0其实说起来简单,当时我也做了好长时间,因为以前没怎么接触grep,因此一开始我想到的办法是使用正则表51Testing软件测试网Jv)M \%U t"c:o
达式,但是在做的过程中突然发现了grep使个不错的东西,因此就使用了。
K3qI l's0oG|;}c051Testing软件测试网!J6]6BH.Jz-@$y)`%N
上面的命令使删除带有“aa”串的文件,那如果我只想留下文件aa呢?很简单
;Bz!d.[ bL0p9O0
d'Z+z(~+\?7MU/p-@ r0zhou@zhou:~/LinuxC/file/test$ rm `ls | grep -v "^aa$" `51Testing软件测试网C V1U&K1SH|

v*q6T m%Iy9mi0在aa前面加上^,后面加上$表示结束符的意思,这个就是完全匹配了。51Testing软件测试网Qu^Wd W
51Testing软件测试网CqPF k,B*i7P
51Testing软件测试网UdyG-[A ?!Eo6?
好了,就这么多。但愿以后能用到这个有用的命令51Testing软件测试网iW-h7^2n"[\a!TI

相关阅读:

TAG: grep rm

 

评分:0

我来说两句

Open Toolbar