Gnu-Parallel

使用 GNU Parallel 複製和重命名文件

  • February 9, 2019

我有一個簡單的腳本,我想files.lst根據其中的名稱列表複製和重命名文件names.lst

**name.lst**
100GV200.vcf
150GV200.vcf
14300GV200.vcf

**file.lst**
file1.txt
file2.txt
file3.txt

到目前為止,我的腳本如下所示:

parallel --link -k "cp {} {}" :::: file.lst :::: name.lst

不幸的是我回來了:

cp: target `100GV200.vcf` is not a directory

當我在終端中執行單個cp命令時,它可以完美執行

cp file1.txt 100GV200.vcf

我在理解 GNU 並行讀取參數時哪裡出錯了?

使用 {1} 和 {2} 表示法:

parallel --link -k cp {1} {2} :::: file.lst :::: name.lst

對我有用,它也適用於引號

parallel --link -k "cp {1} {2}" :::: file.lst :::: name.lst

要使其與 {} 一起使用,您必須執行以下操作:

parallel --link -k "cp {}" :::: file.lst :::: name.lst

因為parallel會自動追加兩個文件的行。

不要為parallel混亂的界面而煩惱;對於沒有特殊字元的文件名,你可以去

paste file.lst name.lst | xargs -n2 echo mv

引用自:https://unix.stackexchange.com/questions/499590