xargs 命令使用

作用:

(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 {} ;
原文地址:https://www.cnblogs.com/xiaohaigegede/p/13632838.html