ubuntu 解压与压缩 zip 文件

ubuntu 预装了 unzip 和 zip 两个工具, 其他系统可能需要手动安装

压缩

zip 压缩命令的第一个参数指定压缩文件名, 后面的所有参数指定待压缩的文件或目录

  • 压缩文件: zip xxx.zip file …

  • 压缩目录: zip -r xxx.zip dir …

压缩目录时需要 -r 选项表示递归子目录, 不然只压缩一个空文件夹


测试目录的结构为:

.
├── Public
│   ├── get-pip.py
│   ├── ja-netfilter-v2.2.2.zip
│   ├── Sweet.tar.xz
│   └── vless-xtls-client.json
└── Test.txt

1 directory, 5 files

压缩时可以指定多个文件或目录, 指定目录时需要使用相对路径, 不然压缩文件将保留绝对路径

zip -r Test.zip Test.txt Public/

打印

  adding: Test.txt (stored 0%)
  adding: Public/ (stored 0%)
  adding: Public/ja-netfilter-v2.2.2.zip (stored 0%)
  adding: Public/get-pip.py (deflated 20%)
  adding: Public/vless-xtls-client.json (deflated 72%)
  adding: Public/Sweet.tar.xz (deflated 0%)

指定压缩文件名时可以省略后缀 .zip, 从而简写为:

zip -r Test Test.txt Public/

其结果与上面一致


使用密码 123456 加密压缩

zip -P 123456 Test_2.zip Test.txt

解压

格式: unzip Test.zip, 默认解压在当前路径

指定解压路径为桌面

unzip Test.zip -d ~/Desktop/

列举压缩文件的内容

unzip -l Test.zip

打印

Archive:  Test.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2022-05-16 13:49   Test.txt
        0  2022-05-16 13:58   Public/
   129652  2022-05-16 13:58   Public/ja-netfilter-v2.2.2.zip
  2680203  2022-05-12 04:15   Public/get-pip.py
     1338  2022-05-16 13:56   Public/vless-xtls-client.json
   439908  2022-05-16 13:55   Public/Sweet.tar.xz
---------                     -------
  3251101                     6 files

有的压缩文件是在 Windows 下压缩的, 直接在 Linux 下解压会有乱码, 这时需要指定 GBK 编码

unzip -O GBK xxx.zip

直接解压加密后的压缩文件时, 会提示输入密码

$ unzip Test_2.zip
Archive:  Test_2.zip
[Test_2.zip] Test.txt password: 
 extracting: Test.txt

当然也可以在命令行指定密码

unzip -P 123456 Test_2.zip
<think>嗯,用户想在Ubuntu系统中学习如何创建和处理zip压缩文件。我需要先回顾一下相关的知识,确保回答准确。首先,Ubuntu默认支持zip和unzip命令,但可能需要安装。我记得安装命令是sudo apt install zip unzip,对吗? 接下来,用户问如何压缩文件zip格式。基本的命令应该是zip 压缩包名.zip 文件或目录。比如,zip myfile.zip file.txt。如果要压缩目录,可能需要加上-r参数递归处理子目录,例如zip -r mydir.zip directory/。 然后,用户可能遇到的问题,比如如何处理文件名中的空格。在引用[4]中提到,可以使用引号包裹变量,比如zip "${f%.*}.zip" "$f"。这能避免空格导致的错误。 另外,用户可能对分卷压缩感兴趣。引用[3]提到分卷压缩的方法,使用zip -s参数指定分卷大小,然后用--out合并成单个文件。例如zip -s 100m largefile.zip --out split.zip,再解压时用unzip split.zip。 还有,用户可能在处理Windows生成的zip文件时遇到乱码。引用[2]建议解压时用-O GBK参数,比如unzip -O GBK file.zip。这可能需要在压缩时也考虑编码问题,但zip命令默认使用系统编码,可能需要注意。 用户可能还想知道如何批量压缩多个文件,每个文件单独成包。引用[4]的例子是使用for循环,遍历文件并逐个压缩。例如,for f in *; do zip "${f%.*}.zip" "$f"; done。这适用于文件名中有空格的情况,用引号包裹变量。 另外,性能优化方面,可能提到使用更高的压缩级别,比如-9参数,但会牺牲时间。或者排除某些文件,用-x参数。 需要检查是否有其他注意事项,比如处理隐藏文件,可能需要包括.开头的文件,或者在命令中添加相应的参数。 最后,生成相关问题时,要考虑用户可能遇到的后续疑问,比如如何解压、处理乱码、分卷压缩、批量处理等。确保问题覆盖用户可能的需求。</think>### 步骤说明 #### 1. 安装zip工具 Ubuntu默认可能未安装zip/unzip工具,需先执行: ```bash sudo apt install zip unzip ``` #### 2. 基础压缩命令 - **压缩单个文件**: ```bash zip 目标文件名.zip文件 ``` 示例:将`file.txt`压缩为`myfile.zip` ```bash zip myfile.zip file.txt ``` - **压缩目录**(需递归处理子目录): ```bash zip -r 目标目录名.zip 源目录 ``` 示例:将`mydir`目录压缩为`mydir.zip` ```bash zip -r mydir.zip mydir/ ``` #### 3. 处理特殊文件名 若文件名含空格或特殊字符,需用引号包裹: ```bash zip "output file.zip" "input file.txt" ``` 批量压缩时(如引用[4]的方法): ```bash for f in *; do zip "${f%.*}.zip" "$f"; done ``` #### 4. 分卷压缩(大文件分割) 使用`-s`参数指定分卷大小(如100MB): ```bash zip -s 100m largefile.zip --out split.zip ``` 合并分卷后解压: ```bash unzip split.zip ``` #### 5. 压缩参数优化 - **设置压缩级别**(0-9,9为最高压缩率): ```bash zip -9 high_compress.zip file.txt ``` - **排除特定文件**: ```bash zip myfile.zip * -x "*.tmp" ``` ### 示例代码 批量压缩当前目录所有文件(含空格文件名): ```bash for f in *; do zip "${f%.*}.zip" "$f" done ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值