xargs 命令

xargs 指令可以从标准输入读取数据,并利用这些数据“组建”为参数并“执行”指令。它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。

xargs 的默认命令 COMMAND 是 echo空格 是默认定界符。 这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。

xargs 是构建单行命令的重要组件之一。

命令用法

$ xargs [OPTION]... COMMAND [INITIAL-ARGS]...

使用 INITIAL-ARGS 参数以及从 input 那里读到的参数一起传递给 COMMAND 命令运行。

常用可选参数

参数

说明

-0, --null

各个参数项由 null 分割而不是空格分隔;禁止任何引号以及反斜杠处理,还有逻辑上的 EOF 处理

-a, --arg-file=FILE

FILE 文件中读取参数而不是从标准输入中读取;如果你使用此选项,除非 标准输入 已经被重定向到 /dev/null,否则,执行命令时不会影响 标准输入 中的数据

-d, --delimiter=CHARACTER

输入流中的参数项由 CHARACTER 分割而不是空格分割;禁止任何引号以及反斜杠处理,还有逻辑上的 EOF 处理

-E END

设置逻辑上的 EOF 字符串;如果在一行的输入中出现 END,那么剩下的输入内容都被忽略(如果指定了 -0-d 则此项忽略

-i, --replace[=R]

将从标准输入中读取到的 INITIAL-ARGS 中的值替换掉指定的 R,如果 R 没有指定,就假定使用 {}

-L, --max-lines=MAX-LINES

每条指令行最多使用 MAX-LINES 行非空输入行;末尾的空白会使一个输入行在逻辑上延伸到下一行

-n, --max-args=MAX-ARGS

每条指令行最多使用 MAX-ARGS 个参数

-P, --max-procs=MAX-PROCS

同时运行 MAX-PROCS 个进程,默认值是 1,如果指定为 0,则 xargs 将尽可能的运行多个进程;一般配合 -n-L 使用。否则最会执行一个进程

-r, --no-run-if-empty

如果标准输入中没有任何非空的字符,则不运行命令;默认情况下即使标准输入没有非空字符,命令也会被运行一次

使用实例

  1. 递归删除目录下的 .jpg 文件:

     $ find . -name "*.jpg" | xargs rm

※ xargs 和管道 | 的区别

  • 管道 | :前面的标准输出作为后面的标准输入;

  • xargs :将标准输入作为命令的参数;

Last updated