linux命令--xargs的使用

Posted xiaojin-boy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux命令--xargs的使用相关的知识,希望对你有一定的参考价值。

xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。

xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。

xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。

xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。

xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。

之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令

例:

[[email protected] ~]# find /sbin -perm +700|ls   这是错误的写法,只处理管道后面的命令
a.log anaconda-ks.cfg install.log install.log.syslog null xiaojin.txt

[[email protected] ~]# find /sbin -perm +700|xargs ls      正确的写法,把管道前面的结果标准输出给管道后面的命令
/sbin/accton /sbin/insmod.static /sbin/pdata_tools
/sbin/addpart /sbin/install-info /sbin/pidof
/sbin/agetty /sbin/installkernel /sbin/pivot_root

命令格式:

somecommand |xargs -item  command

测试文件:
cat >>test.txt<<EOF 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
EOF
使用实例

1、多行输入单行输出

例:

[[email protected] ~]# cat 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
[[email protected] ~]# cat test.txt |xargs
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

2、-n  多行输出

例:

[[email protected] ~]# cat test.txt |xargs -n 5
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

3、-d 定义一个定界符

例:

[[email protected] ~]# echo "namaeXnameXname"|xargs -dX
namae name name

[[email protected] ~]# echo "namaeXnameXname"|xargs -da
n m eXn meXn me

4、-n 结合 -d使用

例:

[[email protected] ~]# echo "namaeXnameXname"|xargs -dX -n1
namae
name
name

5、 -I,使用 -I 指定一个替换字符串 {},这个字符串在 xargs 扩展时会被替换掉,当 -I 与 xargs 结合使用,每一个参数命令都会被执行一次:

例:

[[email protected] ~]# ls .*jpg|xargs -n1 -i cp {} /data01/images

6、xargs 结合 find 使用

用 rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long. 用 xargs 去避免这个问题:

find / -type f -name "*.log" |xargs rm -f

 

 

 

 

 

 







































以上是关于linux命令--xargs的使用的主要内容,如果未能解决你的问题,请参考以下文章

linux下使用awk xargs批量杀进程

Linux常用命令

每天一个Linux命令(21)find命令_xargs参数

linux下xargs命令用法详解

linux shell脚本学习xargs命令使用详解

转 linux下xargs命令用法详解