怎樣批量解壓文件夾裏面的所有7z壓縮包,跳過rom1s文件夾+驗證完整性
【命令完全配套、跳过rom1s、带 sudo 的批量解压命令,复制就能用】:
【sudo sh -c 'cd /media/ubunto/SHARE && for file in *.7z; do dir="${file%.7z}"; if [ "$dir" != "rom1s" ]; then 7z x -y "$file"; fi; done'
-
这条命令会:
-
进入/media/ubunto/SHARE目录
-
遍历所有.7z压缩包
-
跳过名字是rom1s.7z的包(就算误生成了也不会处理)
-
把其他所有.7z包解压成同名文件夹,自动覆盖已有文件
如果你想解压完直接删掉.7z文件,保持目录干净,用这条:
sudo sh -c 'cd /media/ubunto/SHARE && for file in *.7z; do dir="${file%.7z}"; if [ "$dir" != "rom1s" ]; then 7z x -y "$file" && rm -f "$file"; fi; done'
需要我再给你一条命令,帮你检查一下解压后的文件夹和原压缩包的完整性吗?
============================
一条和打包 / 解压命令配套的完整性校验命令,能检查所有压缩包和原文件夹是否完好,也会自动跳过rom1s:
sudo sh -c 'cd /media/ubunto/SHARE && for dir in */; do name="${dir%/}"; if [ "$name" != "rom1s" ] && [ -d "$name" ] && [ -f "${name}.7z" ]; then echo -e "\n=== 校验 $name ==="; echo "原文件夹大小:"; du -sh "$name"; echo "压缩包大小:"; du -sh "${name}.7z"; echo "压缩包完整性测试:"; 7z t "${name}.7z"; fi; done'
-
自动进入/media/ubunto/SHARE目录
-
遍历所有文件夹,跳过rom1s
-
对每个文件夹和它对应的.7z包做两件校验:
-
对比两者的大小,确认数据量正常
-
用7z t命令直接测试压缩包是否损坏、能否正常解压
-
输出结果用=== 校验 文件夹名 ===分隔,一目了然
如果看到Everything is Ok,就说明这个压缩包是完好无损的。
需要我再给你一条 ** 一键删除所有.7z包(跳过 rom1s)** 的清理命令吗?
====================================================================
一条安全、不碰原文件夹、只删 7z 包、跳过 rom1s的清理命令,直接复制就能用:
sudo sh -c 'cd /media/ubunto/SHARE && for file in *.7z; do dir="${file%.7z}"; if [ "$dir" != "rom1s" ]; then rm -f "$file"; fi; done'
-
它只会删除当前目录下的.7z文件,不会动任何文件夹
-
会自动跳过rom1s.7z(如果存在的话)
-
执行前可以先跑下面这条「预览命令」,看看它会删哪些文件,确认无误再删:
cd /media/ubunto/SHARE && for file in *.7z; do dir="${file%.7z}"; if [ "$dir" != "rom1s" ]; then echo "将删除: $file"; fi; done
预览没问题,再用上面的删除命令即可