代码之家  ›  专栏  ›  技术社区  ›  Fab

Bash脚本-并行解压缩并等待结束

  •  2
  • Fab  · 技术社区  · 9 年前

    我需要解压缩一些档案,我想加快这个过程。 这是我的剧本:

    for archive in $path; do
    
        STEM=$(basename "${archive}" .gz)
        gunzip -c $archive > $here/$STEM
    
    done
    
    for file in `ls "$here"`; do
         ... processing ...
    done
    

    有没有办法一次解压缩多个(全部)档案并等待完成?

    for archive in $path; do
    
        ... parallel unzip ...
    
    done
    
    WAIT
    
    for file in `ls "$here"`; do
         ... processing ...
    done
    

    谢谢

    2 回复  |  直到 9 年前
        1
  •  3
  •   Mark Setchell    9 年前

    你可以用 这样地:

    parallel 'gunzip -c {} > "$here/$(basename {} .gz)"' ::: $path
    

    在一个小目录中的一些文件进行测试,直到你掌握了窍门。

    如果你有10000个文件要解压,这不会突然开始10000个 unzip 解压

    您还可以使用 parallel --progress ... parallel --bar ... .

    GNU并行 通过使用 parallel --dry-run ...

        2
  •  1
  •   Jack    9 年前

    for archive in $path; do
    
        STEM=$(basename "${archive}" .gz)
        gunzip -c $archive > $here/$STEM &
    
    done
    
    wait
    
    推荐文章