批量解压需先识别文件类型再调用对应命令:.zip用unzip -o,.tar类用tar -xf,.7z用7z x;shell脚本简洁高效,python用shutil.unpack_archive()跨平台更安全灵活。
用脚本批量解压压缩文件,核心是借助系统命令行工具(如 unzip、tar、7z)配合 shell 或 python 脚本实现自动化,避免手动逐个操作。
识别压缩文件类型再解压
不同后缀对应不同解压命令,脚本需先判断格式再调用对应工具:
-
.zip → 使用
unzip -o(-o覆盖已存在文件) -
.tar、.tar.gz、.tgz、.tar.bz2 → 使用
tar -xf(自动识别压缩方式) -
.7z → 需提前安装
p7zip,用7z x - 可统一用
file -i filename或扩展名匹配,避免误判
Shell 脚本快速批量解压(Linux/macOS)
保存为 batch-unzip.sh,赋予执行权限后运行即可:
#!/bin/bash
for archive in *.zip *.tar *.tar.gz *.tgz *.tar.bz2 *.7z; do
[ -f "$archive" ] || continue
echo "正在解压: $archive"
case "$archive" in
*.zip) unzip -o "$archive" ;;
*.tar|*.tar.gz|*.tgz|*.tar.bz2) tar -xf "$archive" ;;
*.7z) 7z x "$archive" ;;
esac
done
注意:脚本默认在当前目录执行;加 cd /path/to/archives 可指定路径;建议先测试单个文件确保环境支持对应命令。
Python 脚本更灵活控制(跨平台推荐)
用 shutil.unpack_archive()(Python 3.5+)自动适配格式,支持指定解压路径和跳过错误:
import shutil
import os
<p>archives = [f for f in os.listdir('.') if f.lower().endswith(('.zip', '.tar', '.tar.gz', '.tgz', '.tar.bz2', '.7z'))]
for arc in archives:
try:</p><h1>自动推断格式,解压到同名文件夹</h1><pre class="brush:php;toolbar:false;"><code> shutil.unpack_archive(arc, extract_dir=os.path.splitext(arc)[0])
print(f"✓ 已解压: {arc}")
except Exception as e:
print(f"✗ 解压失败 {arc}: {e}")</code>
优势:不依赖外部命令,Windows/Linux/macOS 通用;可轻松加入日志、重命名、过滤子目录等逻辑。
安全与实用小提醒
批量解压存在风险,实际使用时建议加上防护措施:
- 解压前检查文件名是否含
../(路径遍历),防止恶意归档覆盖系统文件 - 用
unzip -l或tar -tf先预览内容,确认无异常路径 - 重要数据先备份原压缩包,解压目标目录建议新建空文件夹
- Windows 用户可用 PowerShell 替代批处理,或直接安装 Git Bash 运行 Shell 脚本











