在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详解