xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。ide
一般状况下,xargs从管道或者stdin中读取数据,可是它也可以从文件的输出中读取数据。xargs的默认命令是echo,这意味着经过管道传递给xargs的输入将会包含换行和空白,不过经过xargs的处理,换行和空白将被空格取代。
工具
xargs是一个很是强大的命令,能够取一个命令的输出做为另外一个命令的参数。下面就是几个关于如何有效使用xargs命令的实例。url
一、当你使用rm命令去删除不少的文件时,如:spa
find ~ -name “*.log” -print -exec rm –f {} \;
你可能会获得错误信息:“/bin/rm Argument list too long – Linux”。图片
这时能够用xargs来避免这个问题get
find ~ -name *.log‘ -print0 | xargs -0 rm –f 或者find ~ -name *.log‘ | xargs rm –f
二、得到/etc下全部以.conf结尾的文件。如下命令仅仅为了帮助你们理解如何使用xargs.find命令的输入结果一个接一个的传递给xargs,做为ls -l的参数。it
find /etc -name "*.conf" | xargs ls -l 或者find /etc -name "*.conf" -exec ls -l {} \;
三、当你想下载一些URL,这些URL都保存在一个文件里,你能够以以下的方式使用xargs命令io
cat url-list.txt | xargs wget –c
四、找出全部的.jpg格式的图片,并将其归档。class
find / -name *.jpg -type f -print | xargs tar -cvzf p_w_picpaths.tar.gz
五、将全部的jpg图片文件复制到外置的硬盘中下载
ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory