我处理ls
as找到的文件
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} {%}