命令简介

zip 命令是 Linux 系统中用于压缩和解压缩文件的工具。它支持创建新的压缩文件,向现有压缩文件中添加文件,列出压缩文件中的内容,以及从压缩文件中提取文件等操作。

命令格式

1
zip [选项] 压缩文件名 文件/目录列表

其中:

  • 压缩文件名:指定要创建或修改的压缩文件名。
  • 文件/目录列表:指定要压缩的文件或目录列表。

参数说明

参数 说明 备注
-r 递归压缩目录 非常有用的选项
-m 将文件移动到压缩文件中,而不是复制 节省磁盘空间
-u 更新现有压缩文件 只压缩新文件或已修改的文件
-d 从压缩文件中删除指定文件 -
-x 排除指定文件或目录 不压缩指定的文件或目录
-l 显示压缩文件中的内容 -
-q 安静模式,不显示过程信息 -
-v 显示详细的过程信息 用于调试
-n 不压缩已存在的文件 -
-j 不创建目录条目 将所有文件放在根目录下

命令实例

基本用法

1.创建压缩文件

1
2
3
4
5
6
7
8
# 压缩单个文件
zip file.zip file.txt

# 压缩多个文件
zip files.zip file1.txt file2.txt file3.txt

# 递归压缩目录
zip -r project.zip project/

2.更新压缩文件

1
2
3
4
5
6
7
8
# 向现有压缩文件中添加新文件(如果新添加的文件在压缩包中,则不会替换原文件)
zip -u files.zip new_file.txt

# 现有压缩文件中添加新文件(如果新添加的文件在压缩包中,则会强制替换原文件)
zip -f files.zip new_file.txt

# 从压缩文件中删除指定文件
zip -d files.zip file2.txt

3.压缩时,排除指定文件不压缩

1
2
# 压缩目录 "my_directory",排除文件 "my_file.txt"
zip -r my_directory.zip my_directory -x my_file.txt

4.测试压缩包是否完整

1
2
leazhi@leazhi-ubuntu2310:~/Templates$ zip -T pass.zip 
test of pass.zip OK

5.列出压缩文件内容

1
2
3
4
5
6
7
8
9
# 显示压缩文件中的内容
leazhi@leazhi-ubuntu2310:~/Templates$ unzip -l pass.zip
Archive: pass.zip
Length Date Time Name
--------- ---------- ----- ----
3225 2024-03-13 11:51 passwd
--------- -------
3225 1 file

6.压缩时排除文件或目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 排除单个文件
zip -r project.zip src/ -x src/main.cpp # 注意这里的排除路径

# 排除多个文件
zip -r project.zip src/ -x src/main.cpp src/pass.wd

# 排除单个目录
eazhi@leazhi-ubuntu2310:~/Templates$ zip -r project1.zip project/ -x project/bin/ # 注意:目录后面一定要加 /
updating: project/ (stored 0%)
updating: project/docs/ (stored 0%)
updating: project/src/ (stored 0%)

# 排除多个目录
leazhi@leazhi-ubuntu2310:~/Templates$ zip -r project2.zip project/ -x project/bin/ project/src/
updating: project/ (stored 0%)
updating: project/docs/ (stored 0%)

7.解压缩文件

1
2
3
4
5
6
7
8
# 解压缩整个文件
unzip files.zip

# 解压缩指定文件
unzip files.zip file1.txt

# 解压缩到指定目录
unzip files.zip -d /path/to/directory/

扩展用法

1.加密压缩文件

zip 命令支持为压缩文件设置密码,以保护文件的隐私和安全。

1
2
3
4
5
# 创建加密的压缩文件
zip -e secret.zip file1.txt file2.txt

# 解压缩加密的文件
unzip secret.zip

2.分卷压缩

对于超大文件或目录,可以将压缩文件分卷,每个卷的大小不超过指定大小。

1
2
3
4
5
# 将压缩文件分卷,每个卷最大 650M
zip -r -s 650m project.zip project/

# 解压缩分卷压缩文件
unzip project.zip

高级用法

1.并行压缩

在多核 CPU 系统上,可以利用多个核心并行压缩,提高压缩速度。

1
2
3
4
5
# 使用 4 个线程并行压缩
zip -r -s 0 -ls -pm project.zip project/

# 解压缩并行压缩的文件
unzip -p project.zip

2.压缩和解压缩符号链接

默认情况下,zip 命令会将符号链接作为普通文件压缩。可以使用特殊选项来保留或解压缩符号链接。

1
2
3
4
5
# 压缩时保留符号链接
zip -y symlinks.zip symlink1 symlink2

# 解压缩时创建符号链接
unzip -N symlinks.zip

通过以上实例和扩展用法,相信你已经对 zip 命令有了更深入的了解。它不仅可以方便地压缩和解压缩文件,还提供了诸如加密、分卷、并行压缩等高级功能。如果你还有任何疑问或需要进一步探讨,欢迎随时向我提出。