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

GNU Parallel:如何依据输入参数命名文件捕获输出

解决GNU Parallel生成自定义输出文件名的问题

我来帮你搞定这个需求!你当前的命令问题在于重定向操作>是在Parallel进程之外,shell会先解析$1和$2(这两个是shell的位置参数,不是Parallel拆分后的字段),所以没法得到你想要的文件名。

正确的命令写法

# 先确保输出目录存在,避免报错
mkdir -p /var/output

# 执行Parallel命令
parallel -j2 --colsep '	' -a "/tmp/input" 'python script.py > /var/output/log_{1}_{2}.txt'

关键细节解释

  • 用Parallel的占位符代替shell变量:Parallel会把每行拆分后的字段用{1}、{2}来引用(对应第一、第二个字段),而不是$1、$2——因为$1是shell的位置参数,在Parallel启动前就会被shell解析,根本轮不到Parallel来替换。
  • 把整个命令用单引号包裹:这样shell不会提前解析{1}和{2},确保这些占位符能被Parallel正确识别和替换。
  • --colsep ' ':明确指定分隔符是制表符(注意这里是真实的制表符,不是空格),保证每行的两个字段被正确拆分。

测试示例

假设你的/tmp/input内容是:

user1	tag1
user2	tag2
user3	tag3

执行上面的命令后,/var/output目录下会生成三个文件:

  • log_user1_tag1.txt
  • log_user2_tag2.txt
  • log_user3_tag3.txt
    每个文件对应python script.py处理该行字段后的输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:04:39