一天一命令-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
时间: 2024-10-11 09:15:43