我已经看到关于此主题的几个问题,但我缺乏将此转换为我的特定问题的能力。我有一个for循环通过子目录循环,然后在每个目录内的压缩文本文件上执行.sh脚本。我想并行化这个过程,但我很努力应用gnu并行。gnu并行并行for循环
这里是我的循环:
for d in ./*/ ; do (cd "$d" && script.sh); done
我明白我需要输入列表转换成并行的,所以我一直在尝试这样的:
ls -d */ | parallel cd && script.sh
虽然这似乎上手,我得到错误时的gzip试图解压目录内的txt文件中的一个,说文件不存在:
gzip: *.txt.gz: No such file or directory
但是,当我运行原始循环时,除了需要花费一个世纪才能完成之外,我没有任何问题。另外,在使用parallel时,我只能得到gzip错误,考虑到我有超过1000个子目录,这太奇怪了。
我的问题是:
我如何并行的情况下,我的工作?如何并行化将.sh脚本的应用程序并行化到其自己的子目录中的1000个文件?即 - 我的问题的解决方案是什么?我必须取得进展。
我错过了什么?语法,循环,坏脚本?我想学习。
并行实际上是否试图并行运行所有这些.sh脚本?为什么我不知道每个.txt.gz文件都有错误?
是平行的应用程序的最佳选择?有没有更适合我需求的选择?
奈斯利解释! –