Linux : xargs
【参考文章】: 阮一峰: xargs 命令教程
1. 简介
管道符可以将前面命令的输入作为管道符后面命令的输入去执行。
比如:
[root@centos ~/shell/xargs]# cat tmp.txt | grep a
abcd
sbdda
但是并不是所有的命令都支持这种标准输入作为参数,xargs命令就可以弥补这一点,通过和管道符配合使用,将标准输出转换为命令的命令的参数。
xargs的默认命令是echo,默认分隔符为空格。
直接执行xargs命令,然后命令读取控制台的输入信息,按Crtl + D 后输出控制台输入的信息。
[root@centos ~/shell/xargs]# xargs
123
123
123
123 123 123
2. 用法
xargs [OPTION]... COMMAND ARGS...
-d : 设置分隔符,必须为单个字符或者\开头的转义字符,默认为换行符和空格
-0 : 数字零,设置分隔符为null
find命令的 -print0 参数指定输出文件列表以**null**分隔,此时xargs使用该参数即可分隔文件列表
-t : 打印要执行的命令,然后直接执行
-p : 打印要执行的命令,并询问用户是否执行,输入y即可执行
-P : 等同于--max-proc,设置执行命令的进程数量,设置为0表示不限制进程数
-I : 为参数设置一个别名,并可以多次使用该别名
[root@centos ~/shell/xargs]# echo -e "q w e r" | xargs -I item sh -c " echo item;mkdir item"
q w e r
[root@centos ~/shell/xargs]# ll
total 16
drwxr-xr-x 2 root root 4096 Dec 17 14:26 e
drwxr-xr-x 2 root root 4096 Dec 17 14:26 q
drwxr-xr-x 2 root root 4096 Dec 17 14:26 r
drwxr-xr-x 2 root root 4096 Dec 17 14:26 w
[root@centos ~/shell/xargs]#
-L : 指定每多少行数作为命令行参数,下面就是每两行作为命令参数
[root@centos ~/shell/xargs]# echo -e "a\nb\nc\nd" | xargs -L 2 echo
a b
c d
-n : 每隔多少项作为命令行参数,下面就是每两项作为命令参数
[root@centos ~/shell/xargs]# echo -e "q w e r" | xargs -n 2 echo
q w
e r
如果文章对您有所帮助,可以点一下推荐