排除了GNU并行中的一些模式



我想使用parallel来实现一个目录下的一些文件,

现在我有一些任务,

1、我想跳过一些文件,例如
parallel -j 16 'zcat {} > {.}.unpacked' ::: *.gz

但是对于这个,我想在操作这个命令时排除一些具有某些模式的文件。我该如何实现呢?

2、当某些作业在操作文件时出错退出时,如何跳过此状态继续操作其他文件?

您对要排除的内容有点模糊,但是说您想处理所有gzip文件,除了以字母a开头的文件:

find -maxdepth 1 -iname "*.gz" ! -iname "a*" -print0 | parallel -0 'zcat {} > {.}.unpacked'
关于你的第二个问题,这是GNU Parallel的默认行为。在错误之后继续,因此不需要显式地执行任何操作。如果您想更改它,请查看--halt选项:

——halt now,fail=1在第一个作业失败时退出。杀死正在运行的作业。

——halt soon,fail=3当3个作业失败时退出,但等待正在运行的作业完成。

——halt soon,fail=3%当3%的作业失败时退出,等待正在运行的作业完成。

——halt now,success=1当任务成功时退出。杀死正在运行的作业。

——halt soon,success=3当3个作业成功时退出,但要等待正在运行的作业完成。

——halt now,success=3%当3%的作业成功时退出。杀死正在运行的作业。

——halt now,done=1当其中一个作业完成时退出。杀死正在运行的作业。

——halt soon,done=3当3个作业完成时退出,但是等待正在运行的作业完成。

——halt now,done=3%当3%的作业完成时退出。杀死正在运行的作业。

如果您不想使用find,您可以使用skip():

parallel -j 16 'zcat {= /mypattern/ and skip() =} > {.}.unpacked' ::: *.gz

/mypattern/可以是任何Perl代码。

相关内容

  • 没有找到相关文章

最新更新