You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将xargs -P命令的输出重定向到各自独立命名的文件

解决方案

你遇到的问题根源是:原写法中的mktemp会在整个管道命令启动前被当前shell提前求值,整个过程只会生成1个文件名,自然会出现并行进程输出覆盖的问题。你只需要把命令执行逻辑包裹在子shell中,让每次并行启动的进程独立执行mktemp即可:

场景1:直接重定向输出

find . -type f -print0 | xargs -0 -P 3 -I {} bash -c 'blahblahcommand "{}" > "$(mktemp).blah"'

场景2:需要通过-o参数指定输出文件

find . -type f -print0 | xargs -0 -P 3 -I {} bash -c 'blahblahcommand "{}" -o "$(mktemp).blah"'

可选优化

如果希望生成的临时文件有固定前缀方便后续整理,可以修改mktemp的模板,例如生成当前目录下前缀为task_output_的临时文件:

# 以重定向场景为例
find . -type f -print0 | xargs -0 -P 3 -I {} bash -c 'blahblahcommand "{}" > "$(mktemp ./task_output_XXXXXX).blah"'

其中XXXXXX是mktemp要求的随机字符占位符,会被自动替换为唯一字符串。


内容的提问来源于stack exchange,提问作者Mr.CPU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:39:00