xargs

基本语法(Synopsis)

xargs [OPTION]... [COMMAND [INITIAL-ARGUMENTS]]

[] 表示可选项,... 表示可重复;大写名称表示需要替换的参数。

基本功能与推荐用法

xargs 从标准输入读取条目,把它们转换为其他命令的参数,适合对大量输入进行分批处理。

printf '%s\n' alpha beta | xargs -n1 echo
find . -type f -print0 | xargs -0 file
find . -type f -name '*.json' -print0 | xargs -0 -n1 jq empty

推荐:

  • 文件名可能包含空格或换行时,让 find 使用 -print0,并让 xargs 使用 -0。
  • 使用 -n N 控制每次调用接收的参数数量;命令开销较高时,适当批处理可以减少进程数。
  • 未指定 COMMAND 时,xargs 默认使用 echo;脚本中建议显式写出命令。

xargs rm 等操作可能不可恢复。先把目标命令替换为 printf '%s\n' 或 echo 检查参数。

示例中的选项、参数与子命令

本表解释本页示例实际出现的选项、参数、子命令及必要的辅助命令语法。

语法元素含义
-n N每次调用 COMMAND 最多传入 N 个输入参数。
-n1-n 1 的紧凑写法,每次调用只传入一个输入参数。
-0按 NUL 而不是空白字符分隔输入。
COMMAND接收转换后参数的命令;示例中为 echo、file 或 jq。
find -print0以 NUL 分隔路径,与 xargs -0 配套使用。
find -type f让辅助的 find 命令只输出普通文件。
find -name GLOB让辅助的 find 命令只输出名称匹配 glob 的文件。
jq empty解析 JSON 但不输出内容,可用于检查输入是否为有效 JSON。

官方资料