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