假设我列出了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
假设我想以 3 倍 3 倍的速度并行复制这些文件。我知道使用该命令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》一书的第 1+2 章(印刷版:http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html在线的:https://doi.org/10.5281/zenodo.1146014)。您的命令行会因此而喜欢您。