ls를 입력할 때 두 번째 인수를 GNU Parallel에 전달합니다.

ls를 입력할 때 두 번째 인수를 GNU Parallel에 전달합니다.

나는 ls다음과 같이 발견된 파일을 처리합니다.

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} {%}

관련 정보