![]() 使用的Linux系统版本信息: [root@linuxshell]# cat /etc/redhat-release CentOSrelease 6.10 (Final) 系统所有信息: [root@linuxshell]# uname -a Linux linux2.6.32-754.el6.x86_64 #1 SMP Tue Jun 19 21:26:04 UTC 2018 x86_64 x86_64 x86_64GNU/Linux xargs: xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。 xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。 xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。 xargs的默认命令是echo,空格是默认定界符。 默认替换符号是{} xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。 参数:
实例 xargs 用作替换工具,读取输入数据重新格式化后输出。 [root@linuxshell]# cat awk.txt total 1564 drwxr-xr-x.2 root root 4096 Aug 14 14:53 1 -rw-r--r--.1 root root 0 Aug 14 14:53 1.txt -rw-r--r--.1 root root 292 Aug 21 18:462010_8.log -rw-r--r--.1 root root 0 Aug 21 19:17 2018.log 多行输入单行输出: [root@linuxshell]# cat awk.txt |xargs total 1564drwxr-xr-x. 2 root root 4096 Aug 14 14:53 1 -rw-r--r--. 1 root root 0 Aug 1414:53 1.txt -rw-r--r--. 1 root root 292 Aug 21 18:46 2010_8.log -rw-r--r--. 1root root 0 Aug 21 19:17 2018.log -n 选项多行输出: [root@linux shell]# cat awk.txt |xargs -n3 total 1564drwxr-xr-x. 2 root root 4096 Aug 14 14:53 1-rw-r--r--. 1 root root 0 Aug 14 14:53 1.txt-rw-r--r--. 1 root root 292 Aug 21 18:462010_8.log -d 选项可以自定义一个定界符: [root@linuxshell]# echo "Linux#PHP#Python#java" |xargs -d# Linux PHPPython java 结合 -n 选项使用: [root@linuxshell]# echo "Linux#PHP#Python#java" |xargs -d# -n2 Linux PHP Python java 我们经常把find和xargs搭配使用,例如: [root@linuxshell]# find ./ -type f -name "*.log"|xargs rm -f 查找所有的 log 文件,并且压缩它们: [root@linuxshell]# find ./ -type f -name "*.log"|xargs tar -zcvf log.tar.gz 统计一个文件目录中所有log文件的行数: [root@linuxshell]# find ./ -type f -name "*.log"|xargs wc -l 18 ./test/a.log 100 ./2010_8.log 33 ./2018.log 151 total 使用 xargs下载所有链接: [root@linuxshell]# cat url.txt|xargs wget -c 使用 xargs -i参数: [root@linuxshell]# find . -name "*.log" |xargs -p -i cp {} /shell/logs cp./test/a.log /shell/logs ?...y cp./2010_8.log /shell/logs ?...y cp./2018.log /shell/logs ?...y [root@linuxshell]# cat logs cat: logs:Is a directory [root@linuxshell]# ls logs 2010_8.log 2018.log a.log 利用xargs关闭不常用的系统启动软件 [root@linuxshell]# chkconfig --list|egrep -v "crond|auditd|iptables|httpd"|xargs-I{} chkconfig {} off 将7天前的日志备份到特定目录, -I '{}' 表示将后面命令行的{} 替换成前面解析出来的参数。root@linuxshell]# find ./ -mtime 7 | xargs -I '{}' mv {} /tmp/logs
[root@linuxshell]# find . -name "*.sh" -print0 | xargs -0 -t ls -al ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:花花一览,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |