一天一命令-xargs

Posted

tags:

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

一天一命令-xargs


xargs

传递标准输入作为下一个命令的参数或者重新格式化并输出

xargs默认命令是echo,默认分隔符是空格。xargs可以将输入文本转换为单行或多行显示,即指定每行显示的个数。

Usage: xargs [OPTION]... COMMAND INITIAL-ARGS...
-0 显示为一列,默认显示为一行,以空格为分隔符
-a file 从文件读取数据而非标准输入
-d 指定分隔符
-l num 指定每行显示的参数个数
-n num 指定以空格为分隔符显示每行的参数个数,如果一个文件(或参数)之间有空格,将被分割为两个文件(或参数)

ls /root/ |xargs

ls /root/ |xargs -d\空格 -l2    //注意空格需要转义

#touch a\ b.txt   //创建一个文件名包含空格的文件
#ls
a b.txt  Desktop/    Downloads/  Pictures/  script/     Videos/
a.log   Documents/  Music/      Public/    Templates/
#ls | xargs  //默认显示为一行,并且以空格为分隔符,所以文件a b.txt将会被分割为两个文件a和b.txt
a b.txt a.log Desktop/ Documents/ Downloads/ Music/ Pictures/ Public/ script/ Templates/ Videos/
#ls | xargs -0   //-0显示为一列,就不会出现上面的问题,推荐使用
a b.txt
a.log
Desktop/
Documents/
Downloads/
Music/
Pictures/
Public/
script/
Templates/
Videos/
#ls | xargs -n3
a b.txt a.log   //-n3应该显示为每行3个文件,但因为文件a b.txt之间有空格,所以被分割为2个文件显示
Desktop/ Documents/ Downloads/
Music/ Pictures/ Public/
script/ Templates/ Videos/
#ls | xargs -l3
a b.txt a.log Desktop/   //-l正常显示每行3个文件
Documents/ Downloads/ Music/
Pictures/ Public/ script/
Templates/ Videos/
#echo "a:b:c:d:e" |xargs -d:
a b c d e
#echo "a:b:c:d:e" |xargs -d: -n2
a b
c d
e

如果需要删除的文件数目太多,提示文件名太长,则可以通过xargs命令自动逐个删除

#find . -type f -name "*.log" -print | xargs -0 rm -f

 

复制当前目录下的*.jpg到/data/images

#ls *.jpg | xargs -n1 -I cp {} /data/images

 

统计一个源代码目录中所有php文件的个数

#find . -type f -name "*.php" -print | xargs -0 wc -l

 

查找所有的jpg 文件,并且压缩它们

#find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz

 

假如你有一个文件包含了很多你希望下载的URL,你能够使用xargs下载所有链接

#cat url-list.txt | xargs wget -c


本文出自 “rackie” 博客,请务必保留此出处http://rackie386.blog.51cto.com/11279229/1939444

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

xargs命令转换管道输入为命令参数

让 xargs 对每一行输入执行一次命令

老男孩教育每日一题-2017年5月19日-使用find命令的时候 |xargs(管道xargs)与-exe有什么区别?

linux xargs命令一(与find ls等命令组合)(转)

linux基础命令:xargs

老男孩教育每日一题-2017年5月18日-说说|(管道)与|xargs(管道xargs)的区别