lala.im:Linux下解压ZIP中文乱码解决/批量解压

運維技術·lala.im · 2019-04-03 · 95 人浏览

原文地址:https://lala.im/5339.html,請支持原作者!該處僅作轉載。

在Linux下解压含有中文的ZIP压缩包一直都是个难题。。因为ZIP不保存编码的特性,Windows下压缩的ZIP包放到Linux下解压就会乱码。
最常用的unzip可以通过打一个patch解决,但太麻烦了。7zip也没办法解决,直到我找到了一个名叫unar的解压工具,是unar不是unrar哦!这个解压工具可以自动判断编码,就算自动判断错误也可以手动去指定你需要的编码来解压。
CentOS7安装:

yum -y install epel-release
yum -y install unar

Debian9安装:

apt -y install unar

使用下面的命令可以先浏览一下压缩包的内容,看是不是乱码:

lsar 'example.zip'

如果还是乱码,就自己手动指定编码再看一次,直到你选择的编码能够正确显示:

lsar -e GBK 'example.zip'

一般情况下Windows下压缩的ZIP都是GBK,我不知道为什么unar会自动判断失败,然后手动指定为GBK就行了。
要解压压缩包:

unar -e GBK 'example.zip'

带密码的压缩包:

unar -e GBK -p password 'example.zip'

使用unar批量解压一个目录内所有zip压缩包,这里我只能简单撸个脚本实现:

nano meizi.sh

脚本如下:

#!/bin/bash
for meizi in *.zip
    do
    unar -e GBK "$meizi"
    done

丢到要解压的目录内给执行权限:

chmod +x meizi.sh

运行即可:

./meizi.sh

批量解压如果压缩包内没有中文的话用7zip会方便一些,安装方法CentOS7:

yum -y install epel-release
yum -y install p7zip

Debian:

apt -y install p7zip-full

直接在要解压的目录内执行下面的命令即可:

7za x "*.zip"

如果是带密码的压缩包(注意-p后面不要带空格直接跟密码输入):

7za x "*.zip" -ppassword

批量解压完成之后,可以使用下面的命令检查一下解压出来的目录是否和本地数目一致,确保文件完整。

统计当前文件夹下文件的个数,包括子文件夹里的:

ls -lR | grep "^-" | wc -l

统计当前文件夹下文件的个数:

ls -l | grep "^-" | wc -l

统计文件夹下目录的个数,包括子文件夹里的:

ls -lR | grep "^d" | wc -l

统计当前文件夹下目录的个数:

ls -l | grep "^d" | wc -l

爽,明天做个种子分享出来:

範例

運維技術 lala.im
Theme Jasmine by Kent Liao