xargs -I 与 -P:占位符替换 + 并行执行
Linux 上用 xargs -I {} 对每行输入执行命令,并用 -P 控制并发数。
把列表通过管道传给 xargs -I {} CMD {},用 {} 占位插入命令任意位置;再加 -P N 可同时运行 N 个进程。
01命令
命令
$ find . -name '*.jpg' -print0 | xargs -0 -I {} -P 4 convert {} {}.thumb.jpg02作用说明
多数人只用过最普通的 xargs 管道,却忘了 -I{} 能把输入项放到命令的任意位置(而不仅是末尾),而 -P N 则让 xargs 变成简易并行调度器,始终保持 N 个进程在跑。配合 -0 和 find -print0 使用,含空格或引号的文件名也不会被拆开。-P 0 表示尽可能多进程;一般按核心数设个数字更稳妥。
03风险
!注意: 并行执行没有内建顺序和限流——别让 -P 的多个进程同时写同一个文件。
04撤销
✓无需撤销——该命令不会改变持久状态。
05来源
- xargs(1) — Linux manual page依据: Documents -I replace-str, -P max-procs for parallel execution, and -0 for NUL-delimited input
- xargs(1) — Arch Linux manual依据: -P maxprocs runs up to that many processes at once; -0 disables space/quoting interpretation
最后验证: 2026-09-17 · 分类: 文件与文件夹