파일에서 매개변수를 동적으로 가져올 때 병렬 명령을 사용하는 방법은 무엇입니까?

파일에서 매개변수를 동적으로 가져올 때 병렬 명령을 사용하는 방법은 무엇입니까?

file다음과 같이 여러 파일에 대한 경로를 나열한다고 가정해 보겠습니다 .

/home/user/file1.txt
/home/user/file2.txt
/home/user/file3.txt
/home/user/file4.txt
/home/user/file5.txt
/home/user/file6.txt
/home/user/file7.txt

이 파일들을 3x3 속도로 병렬로 복사하고 싶다고 가정해 보겠습니다. 이 명령을 사용하면 parallel다음과 같이 특정 명령을 병렬로 실행할 수 있다는 것을 알고 있습니다 .

parallel bash -c "echo hello world" -- 1 2 3

그러나 이 실행 방법은 parallel따옴표 안에 변수를 사용하더라도 고정 매개변수가 하나만 있기 때문에 하드코딩됩니다. parallel파일에서 동적으로 매개변수를 가져오는 명령을 실행하고 싶습니다 . 예를 들어, file실행 중인 세 개의 병렬 프로세스(이와 같은 것 )에서 cp "$file" /home/user/samplefolder/모든 파일을 복사 하고 싶다고 가정해 보겠습니다 . 어떻게 해야 합니까? parallel이를 수행하고 파일에서 매개변수를 동적으로 가져오는 데 사용할 수 있는 매개변수가 있습니까?

답변1

GNU Parallel을 사용하는 경우 다음 중 하나를 수행할 수 있습니다.

parallel cp {} destination/folder/ :::: filelist
parallel -a filelist cp {} destination/folder/
cat filelist | parallel cp {} destination/folder/

20분 정도 시간을 내어 GNU Parallel 2018 책(인쇄 버전:http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html온라인:https://doi.org/10.5281/zenodo.1146014). 당신의 명령줄은 당신을 좋아할 것입니다.

관련 정보