xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。xargs用作替换工具,读取输入数据重新格式化后输出。
[root@localhost ~]# cat ii
a
b
d
g
e
g j t
w
i
o p l
xargs格式化输出:
[root@localhost ~]# cat ii | xargs
a b d g e g j t w i o p l
-n多行输出
[root@localhost ~]# cat ii | xargs -n3
a b d
g e g
j t w
i o p
l
xargs结合find使用
用rm 删除太多的文件时候,可能得到一个错误信息:
/bin/rm Argument list too long.
用xargs去避免这个问题:
find . -type f -name "*.log" -print0 | xargs -0 rm -f
-print0 和 -0 的作用:
因为xargs本身是用空白来分割记录的,如果搜索到的文件名中含有空格(例: file 1.log),此时删除文件将会出现问题。 find命令在打印出一个文件名之后接着输出一个 NULL 字符 (' ') 而不是换行符, 然后再告诉 xargs 也用 NULL 字符来作为记录的分隔符.
find -print 和 -print0的区别:
-print 在每一个输出后会添加一个回车换行符,而-print0则不会。