Linux 中 rm 反向删除文件

比如下面 touch 出一些文件。

[root@localhost allen]# touch a b c d aa bb cc dd aaa aab aac aad
[root@localhost allen]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 26 21:59 a
-rw-r--r--. 1 root root 0 Mar 26 21:59 aa
-rw-r--r--. 1 root root 0 Mar 26 21:59 aaa
-rw-r--r--. 1 root root 0 Mar 26 21:59 aab
-rw-r--r--. 1 root root 0 Mar 26 21:59 aac
-rw-r--r--. 1 root root 0 Mar 26 21:59 aad
-rw-r--r--. 1 root root 0 Mar 26 21:59 b
-rw-r--r--. 1 root root 0 Mar 26 21:59 bb
-rw-r--r--. 1 root root 0 Mar 26 21:59 c
-rw-r--r--. 1 root root 0 Mar 26 21:59 cc
-rw-r--r--. 1 root root 0 Mar 26 21:59 d
-rw-r--r--. 1 root root 0 Mar 26 21:59 dd

现在想只留下 aa 文件,剩下的全部删除。如何做?

下面即可:

[root@localhost allen]# rm -rf `ls | grep -v "^aa$"`

解释: 这里用到反引号, 把执行命令的结果作为前面的参数

grep -v: -v 表示反向

^aa$: 用来完全匹配 aa

也看到用下面这个的

[root@localhost allen]# ls|grep -v "^aa$" | xargs rm -rf

man 中如下解释:

xargs - build and execute command lines from standard input

 

posted @ 2016-03-26 22:17  allenbackpacker  阅读(1181)  评论(0)    收藏  举报