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
b
c
d" | 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
原文地址:https://www.cnblogs.com/virgosnail/p/14149478.html