linux 多种压缩解压方法
linux
本文字数:482 字 | 阅读时长 ≈ 2 min

linux 多种压缩解压方法

linux
本文字数:482 字 | 阅读时长 ≈ 2 min

软件包安装

在Linux系统上安装7z(7-Zip),我将为您提供几个主流Linux发行版的安装命令:

对于Ubuntu/Debian系统:

sudo apt-get update
sudo apt-get install p7zip-full p7zip-rar

对于CentOS/RHEL系统:

sudo yum install epel-release
sudo yum install p7zip p7zip-plugins

对于Fedora系统:

sudo dnf install p7zip p7zip-plugins

对于Arch Linux系统:

sudo pacman -S p7zip

安装完成后,您可以通过以下命令验证安装是否成功:

7z --help

1. 解压 zip 文件

1.1 python 解压 zip 文件

假设 images_list 为你的待压缩列表

import os
import subprocess
from concurrent.futures import ThreadPoolExecutor
from tqdm import tqdm

# ZIP文件列表
zip_list = [
    'ALFRED.zip', 'HQ-Edit.zip', 'RAVEN_train_images.zip', 'VIST.zip',
]

# 指定ZIP文件所在的文件夹
zip_folder = '/llm-cfs-nj/person/harryyhwang/dataset/M4-Instruct-Data'
# 指定解压的目标文件夹
target_folder = '/llm-cfs-nj/person/harryyhwang/dataset/M4-Instruct-Data'

def extract_with_7zip(zip_filename):
    """ 使用7-zip解压文件到指定目录 """
    zip_path = os.path.join(zip_folder, zip_filename)
    extract_path = os.path.join(target_folder, zip_filename[:-4])
    os.makedirs(extract_path, exist_ok=True)
    command = ["7z", "x", "-aoa", f"-o{extract_path}", zip_path]
    subprocess.run(command, check=True)
    print("========================================================")
    print(f"{zip_filename} has been extracted to {extract_path}")
    print("========================================================")
    return f"{zip_filename} has been extracted to {extract_path}"

# 使用线程池来并发解压文件
with ThreadPoolExecutor(max_workers=4) as executor:
    results = list(tqdm(executor.map(extract_with_7zip, zip_list), total=len(zip_list)))

for result in results:
    print(result)

print("All files have been extracted.")

优点

缺点

2. 解压 tar.gz 文件

2.1 shell 解压 tar.gz 文件

2.1.1 标准解压方法

# 基本解压命令

2.1.2 多核心加速解压

# 使用pigz进行多核心解压,-p 4 表示使用4个核心
tar -I 'pigz -p 4' -xvf file.tar.gz

安装pigz(并行压缩工具):

# Debian/Ubuntu系统
apt-get update && apt-get install pigz

2.2 压缩为 tar.gz 文件

tar -czvf archive_name.tar.gz /path/to/directory_or_file
4月 06, 2025
3月 10, 2025
12月 31, 2024