xargs -I 与 -P:占位符替换 + 并行执行

Linux 上用 xargs -I {} 对每行输入执行命令,并用 -P 控制并发数。

Linuxxargs 参数传递批处理并行中风险
把列表通过管道传给 xargs -I {} CMD {},用 {} 占位插入命令任意位置;再加 -P N 可同时运行 N 个进程。

01命令

命令
$ find . -name '*.jpg' -print0 | xargs -0 -I {} -P 4 convert {} {}.thumb.jpg

02作用说明

多数人只用过最普通的 xargs 管道,却忘了 -I{} 能把输入项放到命令的任意位置(而不仅是末尾),而 -P N 则让 xargs 变成简易并行调度器,始终保持 N 个进程在跑。配合 -0 和 find -print0 使用,含空格或引号的文件名也不会被拆开。-P 0 表示尽可能多进程;一般按核心数设个数字更稳妥。

03风险

风险中风险
!注意: 并行执行没有内建顺序和限流——别让 -P 的多个进程同时写同一个文件。

04撤销

✓无需撤销——该命令不会改变持久状态。

05来源

  • xargs(1) — Linux manual page
    man7.org · technical · 2026-09-17
    依据: Documents -I replace-str, -P max-procs for parallel execution, and -0 for NUL-delimited input
  • xargs(1) — Arch Linux manual
    Arch Linux · technical · 2026-09-17
    依据: -P maxprocs runs up to that many processes at once; -0 disables space/quoting interpretation

最后验证: 2026-09-17 · 分类: 文件与文件夹