xargs 命令

原文地址: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

原文地址:https://www.cnblogs.com/dyh004/p/10273863.html