有时候比如我们删除上万行的文件种的几千行需要怎么做呢
如果配合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 都是对特殊字符进行处理
不清楚的可以自己试试。