在输入 ls 时将第二个参数传递给 GNU Parallel

在输入 ls 时将第二个参数传递给 GNU Parallel

我处理lsas找到的文件

ls /folder/ | parallel -j20 ./command {}

但我还需要传递工作号码。我试过

ls /folder/ | parallel -j20 ./command {1} {2} ::: {1..20}
ls /folder/ | parallel -j20 ./command {} {} ::: {1..20}

但它不起作用。我也尝试过{#}传递工作号码。

答案1

替换字符串{#}应该正是您所需要的。例如,给定

$ ls
 file1  'file2 with spaces'  'file3'$'\n''with'$'\n''newlines'   file4   file5

然后

parallel --null echo {#} {} ::: *
1 file1
2 file2 with spaces
3 file3
with
newlines
4 file4
5 file5

或者,如果您有足够的文件超出 ARG_MAX 限制,您可以使用

printf '%s\0' * | parallel --null echo {#} {}

答案2

我不清楚你想做什么。也许其中之一?

ls /folder/ | parallel -j20 ./command {1} {2} :::: - ::: {1..20}
ls /folder/ | parallel -j20 ./command {1} {2} :::: - :::+ {1..20}
ls /folder/ | parallel -j20 ./command {1} {#}
ls /folder/ | parallel -j20 ./command {1} {%}

相关内容