假设在某路径下有 a.txt, b.txt, c.txt, d.txt, e.txt
五个文件,如何在保留特定某个的前提下删除其余的?
$ ls * | grep -v c.txt | xargs rm -f
grep -v
:-v
是 --invert-match
即指定排除条件;
xargs
:从 standard input
读取参数并以 space
,tab
,newline
和 end-of-line
作为分界符来分隔这些参数;然后传给它的参数——可以是一个处理命令。
所以以上的命令分析一下即:
ls *
列出当前路径下所有文件;grep -v
进行筛选,条件是排除c.txt
项;xargs
分隔grep
传来的结果进而得出除了c.txt
的其他四个文件(实际上分解出的参数不止四个文件名,但不影响后面的操作);rm -f
处理收到的结果,完工。