有时候比如我们删除上万行的文件种的几千行需要怎么做呢

如果配合find 和exec 因为exec有个内存溢出的可能所以一般都会有控制。

例如:

find .  -name *.log -exec rm {} \;
-bash: /usr/bin/find: Argument list too long

 

如果用find xargs 就可以以流的形式处理。

find / -name *.log | xargs -n 1000 rm -f

 因为rm 接收参数的数量是有限的, 所以每次传 1000个参数给他,这样可以满足你的需求。

补充一点,这种写法其实不是特别严谨,因为如果日志文件的命名有特殊字符的话,上面命令将会对特殊字符文件识别不了

 

严谨的写法

find / -name '*.log' -print0 |xargs  -0 -n 1000 rm -f

 这里前面的print0 和 后的-0 都是对特殊字符进行处理

 

不清楚的可以自己试试。