作用:
(1)将前一个命令的标准输出传递给下一个命令,作为它的参数,xargs的默认命令是echo,空格是默认定界符
(2)将多行输入转换为单行
使用模式:
front command | xargs -option later command
front command:前一个命令
-option:xargs的选项
later command:后一个命令
常用参数:
-n:指定一次处理参数的个数 -d:自定义参数界定符 -p:询问是否允许later command 参数 -t:表示先打印命令,然后再执行 -i:逐项处理
其他参考:man xargs
example:
测试文本:test.txt
a b c d e f g
h i j k l m n
o p q
r s t
u v w x y z
(1)多行输入单行输出
cat test.txt | xargs
结果:
a b c d e f g h i j k l m n o p q r t s u v w x y z
(2)指定一次处理的参数个数:指定为5,多行输出
cat test.txt |xargs -n 5
结果:
a b c d e
f g h i j
k l m n o
p q r t s
u v w x y
z
(3)自定义参数界定符:指定界定符为‘m’
cat test.txt | xargs -d m
结果:
a b c d e f g
h i j k l n
o p q
r s t
u v w x y z
(4)询问是否运行later command 参数
cat test.txt | xargs -n 5 -p
结果:
(5)删除指定名称的进程:进程名为Deadpool
ps -ef | grep 'Deadpool' | grep -v 'grep'| awk '{print $2}' | xargs kill -9
xargs与管道|的区别:
I 用来将前一个命令的标准输出传递到下一个命令的标准输入,xargs将前一个命令的标准输出传递给下一个命令,作为它的参数。
# 使用管道将ls的结果显示出来,ls的标准输出的结果作为cat的标准输入 ls | cat # 使用xargs将ls的结果作为cat的参数,ls的结果为文件名,所以cat文件名即查看文件内容 ls | xargs cat
xargs与exec的区别:
exec参数是一个一个传递的,传递一个参数执行一次命令;xargs一次将参数传给命令,可以使用-n控制参数个数。
#xargs 将参数一次传给echo,即执行:echo begin ./xargs.txt ./args.txt find . -name '*.txt' -type -f | xargs echo begin #exec 一次传递一个参数,即执行:echo begin ./xargs.txt ; echo begin ./args.txt find . -name '*.txt' - type -f -exec echo begin {} ;