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
浙公网安备 33010602011771号