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。 |