🧾 引言
在飞牛NAS的日常使用中,用户常面临压缩包批量处理的痛点:
- 手动操作繁琐:无法批量解压,逐个点击解压耗时且易出错

为解决这个问题,编写了一个批量解压交互式Shell脚本,除了批量解压外还支持:
✅ 智能路径选择
✅ 压缩包内容预览
✅ 多文件/关键字筛选
✅ 安全删除确认
✅ 同名文件冲突处理(覆盖/跳过/重命名)
🧩 脚本核心功能一览
✅ 智能路径选择:自动验证文件夹是否存在✅ 格式灵活筛选:支持 ZIP/RAR/7Z 三种主流格式✅ 两种解压模式:
- 每个压缩包单独生成同名文件夹
- 所有文件统一解压到指定目录
✅ 删除确认机制:解压后可选择是否删除源文件
✅ 错误处理防护:路径无效/格式不支持时自动提示
✅ 预览功能:解压前查看压缩包内容
✅ 同名文件处理:统一解压模式下支持覆盖/跳过/重命名
🔄 交互流程

🛠️ 交互式脚本代码(完整版)
代码文件过长,就不占篇幅了,可私信发送“解压脚本”获取文件
#!/bin/bash
# 提示用户输入目标路径
read -p "请输入压缩包所在文件夹路径(例如 /volume1/Download): " target_dir
# 检查路径是否存在
if [ ! -d "$target_dir" ]; then
echo "❌ 路径不存在,请检查后重试!"
exit 1
fi
# 进入目标目录
cd "$target_dir" || exit
# 显示当前目录内容
echo "当前目录文件:"
ls -l
# 新增预览选项
****** 此处省略N行代码
echo "✅ 预览完成!"
fi
# 新增选择特定压缩包功能
read -p "是否选择特定压缩包解压?(y/n): " select_confirm
if [[ "$select_confirm" =~ ^[Yy]$ ]]; then
****** 此处省略N行代码
# 读取用户选择
read -p "请选择要解压的压缩包编号(多个用空格分隔): " -a selected_indices
# 处理选择
****** 此处省略N行代码
# 提供解压方式选择
****** 此处省略N行代码
# 解压所选文件
****** 此处省略N行代码
# 解压后询问是否删除源文件
****** 此处省略N行代码
echo "✅ 所有压缩包已删除!"
else
echo "⚠️ 已保留压缩包文件"
fi
📋 使用步骤详解
第1步:准备环境
- 安装解压工具:
opkg update && opkg install unzip unrar p7zip
- 启用SSH服务(设置 → 系统设置 → 安全 → SSH服务)
第2步:运行脚本
- 创建脚本文件:
nano batch_extract.sh
- 粘贴代码并保存(按
Ctrl+O 保存,Ctrl+X 退出)
- 赋予执行权限:
chmod +x batch_extract.sh
第3步:交互式操作
- 运行脚本:
./batch_extract.sh
- 按照提示逐步选择路径和解压方式
🧪 示例操作演示
$ ./batch_extract.sh
请输入压缩包所在文件夹路径(例如 /volume1/Download): /vol1/1000/test
当前目录文件:
total 149360
-rwxrwx--x+ 1 Jaben Users 6835 Jan 22 21:11 batch_extract.sh
-rw-rw----+ 1 Jaben Users 51429574 Jan 22 17:41 经典粤语歌1.zip
-rw-rw----+ 1 Jaben Users 42907943 Jan 22 17:42 经典粤语歌2.7z
-rw-rw----+ 1 Jaben Users 58590974 Jan 22 17:42 经典粤语歌3.7z
是否预览所有压缩包内容?(y/n): y
🔍 正在预览压缩包内容...
--------------------
压缩包: 经典粤语歌1.zip
--------------------
压缩包: *.rar
./batch_extract.sh: line 28: unrar: command not found
--------------------
压缩包: 经典粤语歌2.7z
--------------------
压缩包: 经典粤语歌3.7z
--------------------
✅ 预览完成!
是否选择特定压缩包解压?(y/n): y
请输入搜索关键字(留空显示所有): 2
--------------------
可选压缩包列表(输入编号选择):
1) 经典粤语歌2.7z
2) 取消
--------------------
请选择要解压的压缩包编号(多个用空格分隔): 2
❌ 已取消操作
Jaben@HomeNas:/vol1/1000/test$ ./batch_extract.sh
请输入压缩包所在文件夹路径(例如 /volume1/Download): /vol1/1000/test
当前目录文件:
total 149360
-rwxrwx--x+ 1 Jaben Users 6835 Jan 22 21:11 batch_extract.sh
-rw-rw----+ 1 Jaben Users 51429574 Jan 22 17:41 经典粤语歌1.zip
-rw-rw----+ 1 Jaben Users 42907943 Jan 22 17:42 经典粤语歌2.7z
-rw-rw----+ 1 Jaben Users 58590974 Jan 22 17:42 经典粤语歌3.7z
是否预览所有压缩包内容?(y/n): y
🔍 正在预览压缩包内容...
--------------------
压缩包: 经典粤语歌1.zip
--------------------
压缩包: *.rar
./batch_extract.sh: line 28: unrar: command not found
--------------------
压缩包: 经典粤语歌2.7z
--------------------
压缩包: 经典粤语歌3.7z
--------------------
✅ 预览完成!
是否选择特定压缩包解压?(y/n): n
1) 每个压缩包单独文件夹
2) 统一解压到指定目录
3) 取消
请选择解压方式:1
正在解压: 经典粤语歌1.zip
Archive: 经典粤语歌1.zip
inflating: 经典粤语歌1/宝石Gem-野狼Disco(feat.陈伟霆).mp3
inflating: 经典粤语歌1/草蜢-失恋.mp3
inflating: 经典粤语歌1/草蜢-失恋阵线联盟.mp3
inflating: 经典粤语歌1/蔡国权-不装饰你的梦.mp3
inflating: 经典粤语歌1/阿梨粤-偏偏喜欢你.mp3
inflating: 经典粤语歌1/阿细-追光者.mp3
正在解压: *.rar
./batch_extract.sh: line 86: unrar: command not found
正在解压: 经典粤语歌2.7z
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Xeon(R) CPU E3-1225 v5 @ 3.30GHz (506E3),ASM,AES-NI)
Scanning the drive for archives:
1 file, 42907943 bytes (41 MiB)
Extracting archive: 经典粤语歌2.7z
--
Path = 经典粤语歌2.7z
Type = 7z
Physical Size = 42907943
Headers Size = 277
Method = LZMA2:25
Solid = +
Blocks = 1
Everything is Ok
Files: 5
Size: 43089394
Compressed: 42907943
正在解压: 经典粤语歌3.7z
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Xeon(R) CPU E3-1225 v5 @ 3.30GHz (506E3),ASM,AES-NI)
Scanning the drive for archives:
1 file, 58590974 bytes (56 MiB)
Extracting archive: 经典粤语歌3.7z
--
Path = 经典粤语歌3.7z
Type = 7z
Physical Size = 58590974
Headers Size = 248
Method = LZMA2:25
Solid = +
Blocks = 1
Everything is Ok
Files: 5
Size: 58876835
Compressed: 58590974
✅ 解压完成!
是否删除已解压的压缩包?(y/n): n
⚠️ 已保留压缩包文件

⚠️ 注意事项
- 路径安全:不要选择系统关键目录(如
/etc)
- 文件覆盖风险:统一解压模式下,同名文件会被覆盖
- 性能监控:通过
top 命令监控CPU/内存使用
💡 高级用法建议
- 扩展支持更多格式:在
*.zip *.rar *.7z 中添加其他格式
- 递归子目录处理:使用
find 命令处理嵌套目录
- 日志记录:添加日志记录功能,便于追踪操作记录
📌 结语
通过本文的交互式脚本,用户可以高效管理飞牛NAS中的压缩包文件。从路径选择到内容预览,再到多选解压与删除确认,每一步都经过安全设计,帮助您减少误操作,提升NAS使用体验。