xargs 就是把从 stdin 接收到数据重新格式化,再将其作为参数提供给其他命令,利用xargs可以将多行输入转换为单行的输出; 也可以将单行输入转换为多行输出。
-d 可以指定定界符
-n 将输入分为多行
[root@master tmp]# cat ceshi.txt | xargs
a b c d e f g h i j k
[root@master tmp]# cat ceshi.txt | xargs -n 2
a b
c d
e f
g h
i j
k
当find与xargs结合时候,就必须将-print0与find结合使用,这是为了预防文件名中的空格而设置的:
find . -type f -name "*.txt" -print0 | xargs -0 rm -rf
(解决参数过长问题,我们可以用-n来指定每行多少参数)
-i 选项告诉xargs用{}来来代替每项的名称
-t 告诉xargs先打印命令然后再执行
-p 使xargs具有交互性,不过鸡肋无用