zip命令 – 压缩文件
zip命令的功能是用于压缩文件,解压命令为unzip。通过zip命令可以将文件打包成.zip格式的压缩包,里面会包含文件的名称、路径、创建时间、上次修改时间等等信息,与tar命令相似。
语法格式:zip 参数 目标文件.zip 源文件或目录名
常用参数:
参数 | 功能 | 操作实例 |
---|---|---|
-A | 自动解压缩文件 | zip -A archive.zip |
-b | 设置暂存文件的目录 | zip -b /tmp archive.zip file.txt |
-c | 添加注释信息到压缩文件 | zip -c archive.zip file.txt -z "This is a comment" |
-d | 更新压缩包内文件 | zip -d archive.zip file.txt |
-F | 尝试修复损坏的压缩文件 | zip -F archive.zip --out fixed_archive.zip |
-h | 显示帮助信息 | zip -h |
-i | 仅压缩符合条件的文件 | zip -r archive.zip . -i "*.txt" |
-k | 使用MS-DOS兼容格式 | zip -k archive.zip file.txt |
-l | 将“LF”替换成“LF+CR”字符 | zip -rl archive.zip . |
-L | 显示版本信息 | zip -L |
-m | 压缩后删除源文件 | zip -rm archive.zip file.txt |
-n | 不压缩具有特定字符串的文件 | zip -rn archive.zip . -x "*test*" |
-q | 静默执行模式 | zip -rq archive.zip . |
-r | 递归处理所有子文件 | zip -r archive.zip . |
-S | 包含系统和隐藏文件 | zip -r archive.zip . -S |
-t | 设置压缩时间为指定日期 | zip -t "2023-05-06 12:00" archive.zip file.txt |
-T | 检查压缩文件是否正确无误 | zip -T archive.zip |
-v | 显示执行过程详细信息 | zip -rv archive.zip . |
-V | 保留VMS操作系统的文件属性 | zip -V archive.zip file.txt |
-w | 在文件名称中加入版本编号 | zip -w archive_v1.zip file.txt |
-X | 不保留过多的文件属性信息 | zip -X archive.zip file.txt |
-y | 直接保存符号链接,而不是对应文件 | zip -y archive.zip symlink_folder |
操作示例
zip格式压缩
zip a.zip a
命令的意思是将当前目录下名称为a
的文件压缩到名为a.zip
的压缩包中。这个命令使用了 Linux 中的
zip
命令。zip
命令可以用于在 Linux 系统中创建、修改和提取 ZIP 文件。zip
命令后紧跟-r
参数表示以递归方式压缩子目录下所有文件,如果只压缩当前目录下的文件,则不需要使用-r
参数。然后,命令中的a.zip
表示生成的压缩文件名为a.zip
,最后的a
表示要压缩的文件名。在执行zip a.zip a这段命令时提示:
-bash: zip: command not found
这个错误提示表示在当前系统中找不到
zip
命令。可能是因为系统没有安装zip
命令或者zip
命令没有被正确的配置。在 Linux 中,如果想要使用
zip
命令进行文件压缩,需要先安装zip
软件包。可以通过命令yum install -y zip
来安装zip
命令。如果是其他 Linux 发行版,则可以通过对应的软件包管理器进行安装。如果已经安装了
zip
软件包但仍然出现-bash: zip: command not found
的错误提示,可以尝试重新配置环境变量,将zip
命令所在的路径添加到系统的 PATH 环境变量中,使得系统能够正确的找到zip
命令。
第一步,列出当前目录下的文件和文件夹
ls
第二步,将当前目录下名为 a 的文件压缩成名为 a.zip 的压缩包
zip a.zip a
第三步,再次列出当前目录下的文件和文件夹
ls
PS: zip格式压缩源文件不会消失,
第四步,在当前路径下创建名为 aa 的目录
mkdir aa
第五步,再次查看当前目录,以确认 aa 目录创建成功
ls
第六步,将 aa 目录压缩成名为 aa.zip 的压缩包
zip aa.zip aa
第七步,再次列出当前目录下的文件和文件夹
ls
第八步,删除名为 aa.zip 的压缩包,-rf 表示强制删除,不进行提示
rm -rf aa.zip
第九步,再次查看当前目录,以确认 aa.zip 压缩包被删除
ls
第十步,进入 aa 文件夹
cd aa
第十一步,在 aa 目录中创建三个空文件 a.txt, b.txt, c.txt
touch a.txt b.txt c.txt
第十二步,返回上一级目录
cd
第十三步,将 aa 目录压缩成名为 aa.zip 的压缩包
zip aa.zip aa
ps:执行命令
zip aa.zip aa
会将当前路径下名为aa
的目录及其所有子文件夹压缩成一个名为aa.zip
的压缩包。并不会把里面的txt文件一起进行压缩;如果要将
aa
目录下的文件一起压缩进aa.zip
中,应该先进入aa
目录,然后执行命令zip ../aa.zip *
。这样可以将aa
目录下所有的文件和文件夹压缩进../aa.zip
这个压缩包中。
这是另一种方法
- 这三条命令的作用依次为:删除当前目录下名为
aa.zip
的文件;显示当前目录下的文件和子目录列表;将当前目录下的aa
目录及其所有子目录和文件压缩成一个名为aa.zip
的文件。- 第一步中的
rm -rf aa.zip
命令会强制删除当前目录下名为aa.zip
的文件,如果该文件不存在,则不会有任何影响。- 第二步中的
ls
命令会显示当前目录下的所有文件和子目录的名称列表,并在每个名称前面添加文件类型和权限等信息。- 第三步中的
zip -r aa.zip aa
命令会将当前目录下名为aa
的目录及其所有子目录和文件压缩成一个名为aa.zip
的文件。其中,-r
选项表示将目录和子目录一并压缩,而不仅仅是压缩目录本身。
zip格式解压
第一步 ls
显示当前目录下的所有文件和子目录的名称列表
第二步 rm -f a
删除当前目录下名为
a
的文件,因为我要解压a.zip,a.zip解压出来就是a文件,但是原本已经存在了文件,所以要先前的删除避免冲突
第三步 unzip a.zip
解压当前目录下名为
a.zip
的文件但是因为没有安装unzip 压缩解压工具,所以报错
PS:虽然之前安装zip这个工具但是对于Liunx来讲
压缩和解压是两个软件
第四步 yum install unzip
使用 yum 包管理器安装 unzip 压缩解压工具。
经过安装unzip这个解压工具,就能顺利解压了;
Liunx来讲
压缩和解压是两个软件
第四步 yum install unzip
使用 yum 包管理器安装 unzip 压缩解压工具。
经过安装unzip这个解压工具,就能顺利解压了;
PS: zip格式不管是压缩还是解压缩对于操作的那个文件都没有任何影响,源文件是不会消失的