【Linux】使用Bash和GNU Parallel并行解压缩文件

这篇具有很好参考价值的文章主要介绍了【Linux】使用Bash和GNU Parallel并行解压缩文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍

在本教程中,我们将学习如何使用Bash脚本和GNU Parallel实现高效并行解压缩多个文件。这种方法在处理大量文件时可以显著加快提取过程。

先决条件

确保系统上已安装以下内容:

  • Bash
  • GNU Parallel

你可以使用以下命令在不同Linux系统上安装它们:

在Ubuntu上安装

# 安装Bash(通常已经安装)
sudo apt-get update
sudo apt-get install bash

# 安装GNU Parallel
sudo apt-get install parallel

在CentOS上安装

# 安装Bash(通常已经安装)
sudo yum install bash

# 安装GNU Parallel
sudo yum install parallel

场景

想象一下,您有一个包含多个ZIP文件的目录,并且希望并行提取它们以节省时间。我们将创建一个Bash脚本,使用GNU Parallel实现此目标。

Bash脚本

让我们逐步分解脚本:

#!/bin/bash

# 切换到指定目录,通过命令行参数传递
cd "$1" || exit

# 获取当前目录下所有zip文件
zip_files=$(ls *.zip)

# 定义解压函数
unzip_file() {
  zip_file="$1"
  # 解压zip文件到新创建的目录
  unzip "$zip_file"
}

# 设置并发线程数,可以根据需要调整
num_threads=12

# 导出解压函数,使其可在子shell中调用
export -f unzip_file

# 利用parallel执行解压函数
echo "$zip_files" | parallel -j "$num_threads" unzip_file

解释:

  • 切换目录: 脚本首先通过命令行参数切换到指定目录,这样您就可以选择要处理的目标目录。

  • 列出ZIP文件: 使用ls获取当前目录中所有ZIP文件的列表。

  • 解压函数: 定义unzip_file函数,用于使用unzip命令提取给定的ZIP文件。

  • 设置线程数: 您可以调整num_threads变量以控制并行线程的数量。

  • 导出函数: 使用export -f unzip_file命令导出unzip_file函数,以便在子shell中使用。

  • 并行执行: 最后,使用parallel命令以并行方式对每个ZIP文件执行unzip_file函数。

运行脚本

  1. 将脚本保存为文件,例如parallel_unzip.sh
  2. 使脚本可执行:chmod +x parallel_unzip.sh
  3. 运行脚本:./parallel_unzip.sh <目标目录>

实验

这里,咱们做一个实验,来对比一下并行和不并行的时间。样例输入是一个包含10个压缩包的文件目录,每个压缩包里面都有1000张待解压的图片。实测数据如下:

线程数 运行时间 (s)
10 4.108
5 7.763
2 18.293
1 36.077
【Linux】使用Bash和GNU Parallel并行解压缩文件,linux,linux,bash,gnu,parallel

结论

通过利用Bash脚本和GNU Parallel,您可以在并行中高效地解压缩多个文件,优化提取过程并节省时间。这种方法在处理大量归档文件时尤为有益。根据您的具体需求自定义脚本,并享受在文件提取任务中并行处理的好处!文章来源地址https://www.toymoban.com/news/detail-758845.html

到了这里,关于【Linux】使用Bash和GNU Parallel并行解压缩文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Shell 命令集合 备份压缩 】Linux 解压缩文件 unzip命令 使用指南

    Shell 命令专栏:Linux Shell 命令全解析 unzip 命令在 Linux 系统中主要用于解压 .zip 格式的压缩文件。 在这个命令中, -x 选项表示解压, -z 选项表示处理 .gz 压缩, -v 选项表示显示详细信息, -f 选项表示指定文件名。 使用unzip命令可以将压缩文件解压缩到当前目录或指定的目录

    2024年02月08日
    浏览(55)
  • Linux系统下cpython-37m-x86_64-linux-gnu.so文件ImportError

    ) 在查找答案的过程中遇到了几种回答,大多评论都表示有用 库的版本不兼容 多数遇到的是这种,但因为库比较难发现哪个不匹配等等原因,继续寻找其它回答…(当然,如果出现numpy或是pillow库的问题,还是及时解决比较好) 我运行的是UA-CMDet,如果有类似的可以作为简单

    2024年02月19日
    浏览(42)
  • 17、并行网关(parallel gateway)

    并行网关(parallel gateway)是指可以同时执行所有输出路径,并且需要所有输入路径执行完毕汇总到网关后流程才往下流转的元素。 并行网关上的序列流即使有条件判断也会忽略。 并行网关分两部分: 叉子(fork): 用于并行任务开始 汇总(join):用于并行任务汇总。 假设社交

    2023年04月24日
    浏览(32)
  • Linux 压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法

    Linux 压缩、解压文件的方式有如下几种: tar 是一种常用的打包工具,可以将多个文件或目录打包成一个 tar 包,也可以将一个 tar 包解压缩到指定的目录。 1.1. 压缩: 1.2. 解压: 1.3. tar 命令各参数含义 tar 命令是 Linux 下常用的打包和压缩工具,用于将多个文件或目录打包成一

    2024年02月10日
    浏览(50)
  • 【linux】linux系统压缩文件与解压文件

    linux系统中的压缩包有: zip,tar,gzip tar格式:简单的打包,并不会压缩,所以实际上打包好的压缩包是比源文件大的。 gzip格式:这个格式是通过一定的算法,把源文件大小进行压缩后打包,实际压缩包会比源文件小。 语法: tar [参数们] 文件1 文件2 文件3 参数: -c 创建压

    2024年01月18日
    浏览(36)
  • 【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法

    目录 1、使用 tar 命令: 1.1. 压缩: 1.2. 解压: 1.3. tar 命令各参数含义 2. gzip、gunzip gzip 命令: 压缩文件: 保留原始文件,创建压缩文件: 保留原始文件,显示压缩进度: gunzip 命令: 解压文件: 保留压缩文件,创建原始文件: 保留压缩文件,显示解压进度: 3. zip、unzip

    2024年02月03日
    浏览(48)
  • Java Stream对象并行处理方法parallel()

            Stream.parallel() 方法是 Java 8 中 Stream API 提供的一种并行处理方式。在处理大量数据或者耗时操作时,使用 Stream.parallel() 方法可以充分利用多核 CPU 的优势,提高程序的性能。本文将从以下几个方面对 Stream.parallel() 进行详解。 什么是 Stream.parallel() 方法         

    2024年02月16日
    浏览(65)
  • C# 任务并行类库Parallel调用示例

    Task Parallel Library 是微软.NET框架基础类库(BCL)中的一个,主要目的是为了简化并行编程,可以实现在不同的处理器上并行处理不同任务,以提升运行效率。Parallel常用的方法有For/ForEach/Invoke三个静态方法。

    2024年02月04日
    浏览(33)
  • 【linux】tar指令压缩解压缩文件夹、文件命令详解

    压缩当前目录下文件夹/文件test到test.tar.gz: 解压缩当前目录下的file.tar.gz到file: -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 -z:有gzip属性的 -j:有bz2属性的 -Z:有compress属性的 -v:显示所有过程 -O:将文件解开到标准输

    2024年02月16日
    浏览(66)
  • Linux文件压缩与解压

    目录 1、分步压缩 1.1、文件打包 1.2、关于为何需要f参数 1.3、压缩包 2、分步解压 2.1、解压 2.2、解包 3、一步压缩与解压       在Windows上我们常用压缩软件完成文件的压缩,在Linux上我们可以使用命令来完成文件压缩。         首先,任意创建两个测试文件:main.c 和 test。

    2024年02月08日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包