并行解压缩.lzo 文件,然后删除原始.lzo 文件

并行解压缩.lzo 文件,然后删除原始.lzo 文件

因此,我需要将文件夹.lzo中的文件/test01/primary解压缩,然后删除所有文件。我也.lzo需要在文件夹中执行相同的操作。两个文件夹中大约有 150 个文件,因此总共有 300 个文件。/test02/secondary.lzo

从命令行我像这样运行来解压缩一个文件解压缩所有文件然后从两个文件夹中删除所有文件的lzop -d file_name.lzo
最快方法是什么。我想出了下面的代码。.lzo.lzo

#!/bin/bash

set -e

export PRIMARY=/test01/primary
export SECONDARY=/test02/secondary

lzop -d $PRIMARY/* & lzop -d $SECONDARY/*
find $PRIMARY $SECONDARY -name '*.lzo' -delete

也许我们可以并行解压缩.lzo文件,然后.lzo同时删除两个文件夹中的所有文件以加快进程。有没有更好的办法?

答案1

根据手册页:

   -U, --unlink, --delete
              Delete input files after succesful compression or decompression.

所以你可以简单地运行

lzop -dU -- {"$PRIMARY","$SECONDARY"}/*.lzo

lzo成功解压后立即删除每个文件。
lzop是单线程的,所以如果你想要并行处理,你可以使用gnu parallel

parallel lzop -dU -- ::: {"$PRIMARY","$SECONDARY"}/*.lzo

答案2

GNU Parallel 按照分配给 GNU Parallel 的顺序生成作业。因此,如果您首先列出 $PRIMARY 文件,然后列出 $SECONDARY 文件,则将首先处理 $PRIMARY 文件。

除非 --shuf给出。--shuf在运行参数之前对其进行打乱。您仍然不会每次都得到一个 $PRIMARY 文件,然后得到一个 $SECONDARY 文件,但至少顺序是随机的。

相关内容