Linux命令传参工具xargs详解

在Linux中,xargs(eXtended ARGuments)是一个给命令传递参数的过滤器或者组合多个命令的工具,能够捕获一个命令的输出,然后传递给另外一个命令。

xargs默认的命令是echo,可以将管道或标准输入的数据转换成命令行参数,或者从文件的输出中读取数据,也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。

语法

somecommand |xargs -item  command

参数说明

参数 说明
-a <file> 读取文件内容作为stdin数据
-d <delim> 自定义xargs分隔符,默认是回车
-e|E <flag> 必须以一个空格分隔,当xargs分析到含有flag这个标志的时候就停止
-i|I 如果linux支持,该参数会将xargs的每项名称按行赋值给{},可用{}代替
-L|l <num> 从标准输入一次读取<num>行送给<command>命令
-n <num> 指定命令在执行的时候一次用的argument的个数,默认是所有
-P 修改最大的进程数,默认是1,0表示不限制
-p 每次执行一个argument的时候询问一次用户
-r 当xargs的输入为空的时候则停止xargs,不再执行
-s <num> 命令行的最大字符数,即xargs后面那个命令的最大命令行的字符数
-t 先打印命令,然后再执行
-x 即exit,主要是配合-s使用

 举例

# 多行输入单行输出
cat demo.txt | xargs

# 多行输出
cat demo.txt | xargs -n3

# 自定义分隔符
echo "nameXnameXnameXname" | xargs -dX
# name name name name

# 删除查找到的文件
find . -type f -name "*.log" -print0 | xargs -0 rm -f

# 统计目录中所有py文件的行数
find . -type f -name "*.py" -print0 | xargs -0 wc -l

原创文章禁止转载:技术学堂 » Linux命令传参工具xargs详解

精彩评论

6+1=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏