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). 당신의 명령줄은 당신을 좋아할 것입니다.