因此,我需要将文件夹.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 文件,但至少顺序是随机的。