xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。
通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从文件的输出中读取数据。xargs的默认命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。
xargs是一个非常强大的命令,可以取一个命令的输出作为另一个命令的参数。下面就是几个关于如何有效使用xargs命令的实例。
1、当你使用rm命令去删除很多的文件时,如:
find ~ -name “*.log” -print -exec rm –f {} \;
你可能会得到错误信息:“/bin/rm Argument list too long – Linux”。
这时可以用xargs来避免这个问题
find ~ -name *.log‘ -print0 | xargs -0 rm –f 或者find ~ -name *.log‘ | xargs rm –f
2、获得/etc下所有以.conf结尾的文件。以下命令仅仅为了帮助大家理解如何使用xargs.find命令的输入结果一个接一个的传递给xargs,作为ls -l的参数。
find /etc -name "*.conf" | xargs ls -l 或者find /etc -name "*.conf" -exec ls -l {} \;
3、当你想下载一些URL,这些URL都保存在一个文件里,你可以以如下的方式使用xargs命令
cat url-list.txt | xargs wget –c
4、找出所有的.jpg格式的图片,并将其归档。
find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz
5、将所有的jpg图片文件复制到外置的硬盘中
ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory
本文出自 “hiyang” 博客,请务必保留此出处http://hiyang.blog.51cto.com/10728919/1762287
原文地址:http://hiyang.blog.51cto.com/10728919/1762287