原文地址:https://www.cnblogs.com/xiaobaishuowoshigou/articles/5057118.html
1.xargs含义
翻译:从标准输入执行命令
lih:记忆:x 是执行的意思;args是参数列表的意思。===>就是把参数传到后面,用这些参数去执行后面的语句。
2.具体含义
xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活.
xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.由此 这个命令也是后置引用的一个强有力的替换.在一般使用过多参数的命令替换失败的时候,用xargs来替换它一般都能成功.通常情况下,xargs从管道或 者stdin中读取数据,但是它也能够从文件的输出中读取数据.
xargs的默认命令是echo.这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代.
如:
bash$ ls -l
total 0
-rwxr-xr-x 2 root root 4096 2009-02-23 090218.txt
-rwxr-xr-x 2 root root 12288 2009-06-08 090607.txt
bash$ ls -l | xargs
090218.txt 090607.txt
bash$ find ~/mail -type f | xargs grep "Linux"
./misc:User-Agent: slrn/0.9.8.1 (Linux)
./sent-mail-jul-2005: hosted by the Linux Documentation Project.
./sent-mail-jul-2005: (Linux Documentation Project Site, rtf version)
./sent-mail-jul-2005: Subject: Criticism of Bozo's Windows/Linux article
3.实例:另一个博客看的
xargs是一个非常强大的命令,可以取一个命令的输出作为另一个命令的参数。下面就是几个关于如何有效使用xargs命令的实例
1. 当你使用rm命令去删除很多的文件时,你可能会得到错误信息:“/bin/rm Argument list too long – Linux”。这时可以用xargs来避免这个问题
find ~ -name *.log‘ -print0 | xargs -0 rm –f
获得/etc下所有以.conf结尾的文件。可以有多种方法获得如下结果。以下命令仅仅为了帮助大家理解如何使用xargs.find命令的输入结果一个接一个的传递给xargs,作为ls -l的参数。
# find /etc -name "*.conf" | xargs ls –l
当你想下载一些URL,这些URL都保存在一个文件里,你可以以如下的方式使用xargs命令
# cat url-list.txt | xargs wget –c
找出所有的.jpg格式的图片,并将其归档。
# find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz
将所有的jpg图片文件复制到外置的硬盘中
# ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory