Linux - Ubuntu中使用7zip和zip命令
7z形式的压缩,比ZIP的压缩比,能提高30%~50%。
以Ubuntu为例,如果没有安装7zip,先要安装。或者是Debian上。
$ sudo apt-get install p7zip
注意package的名字是p7zip,因为7是数字不能开头。
安装完看一下这个包都安装了哪些文件:
$ dpkg -L p7zip
/.
/usr
/usr/bin
/usr/bin/7zr
/usr/bin/p7zip
/usr/lib
/usr/lib/p7zip
/usr/lib/p7zip/7zr
/usr/share
/usr/share/doc
/usr/share/doc/p7zip
/usr/share/doc/p7zip/NEWS.Debian.gz
/usr/share/doc/p7zip/README.Debian
/usr/share/doc/p7zip/changelog.Debian.gz
/usr/share/doc/p7zip/copyright
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/7zr.1.gz
/usr/share/man/man1/p7zip.1.gz
我们看到主要两个bin文件,/usr/bin/7zr和/usr/bin/p7zip,还安装了manual文档。
这里我安装的是轻量版,所以装完使用的程序名是7zr,如果是安装的完全版,程序名是7za。
7zr是一个独立程序。
如果安装完全版以及支持rar的版本,命令如下(rar版可能收费,没试验):
$ sudo apt install p7zip-full p7zip-rar
安装完7zip后,在GUI界面上也可以操作。对7z或zip文件,可以鼠标右键选择解压缩,或者双击打开。
对普通文件或文件夹,选中后,右键也可以选择压缩。
命令行使用方法如下:
使用help命令查看帮助:
$ 7zr --help
或者使用man命令查看详细信息:
$ man 7zr
命令语法格式:
7zr <command> [<switches>... ] <archive_name> [<file_names>... ] [<@listfiles>... ]
添加压缩文件:
$ 7zr a OutputFile files_to_compress
会在当前文件夹生成一个OutputFile.7z的一个压缩文件。
$ 7zr a OutputFile.7z files_to_compress
指定了7z后缀名,就不会再添加7z文件名后缀。和上条命令的结果一样。
解压文件:
使用完整路径的解压:
$ 7zr x file.7z
将所有文件或文件夹都放到一级目录中,
$ 7zr e file.7z
如果指定要解压的文件夹:
$ 7zr x -o./my_folder file.7z
注意-o后面直接接路径,中间没有空格。
使用List文件指定要压缩的文件列表:
$ cat list.txt
./1.txt
./2.txt
$ ls
1.txt 2.txt list.txt
$ 7zr a output @list.txt
$ ls
1.txt 2.txt list.txt output.7z
注意:
在Linux/Unix里,不要直接使用7-zip文件格式来进行文件备份。
因为7-zip并不保存文件的owner/group属性。
如果要备份,请使用tar命令。
备份一个文件夹:
$ tar cf - directory | 7zr a -si directory.tar.7z
提取一个备份文件:
7zr x -so directory.tar.7z | tar xf -
还有,使用通配符*时要注意,在将一个文件夹添加为7zip文件时,不需要使用此通配符,如果要使用,请注意一下结果的区别。
我使用的结果是,使用了*通配符,则在添加压缩文件时,会多包含进来一层。
另外在添加压缩文件时,要注意一下原文件夹里的隐藏文件和隐藏文件夹是否包含进来了,这些内容的名字都是以一个点开头的,比如~/.profile这个文件。
=======================================================
下面介绍一下如何使用zip命令来在linux中解压和压缩zip文件。
Zip文件使用广泛,在Windows,macOS和Linux中,都有工具方便的操作zip文件。
在Linux中,使用zip命令来创建zip压缩文件。
语法如下:
zip OPTIONS ARCHIVE_NAME FILES
要在指定的文件夹内创建zip压缩文件,用户要有写权限。
Zip类型的文件是不支持Linux风格的文件权限管理的,会丢失这些信息。所以zip解压出来的文件,其文件的所有者就是运行zip命令的用户,而不是文件创建时的用户。如果要保留这些文件权限信息,请使用tar命令。
而zip命令,大多数Linux版本中,并没有安装,没装的话先安装:
Ubuntu和Debian:
$ sudo apt install zip
CentOS和Fedora:
$ sudo yum install zip
压缩多个文件或文件夹:
$ zip archivename.zip filename1 filename2 filename3
如果参数里给的归档压缩文件名不是以.zip结尾,则自动加上,但如果名称中含"."则除外,比如想使用自己指定的后缀名时。
如果不想看见信息详情,使用-q选项。
如果要包含子文件夹使用-r选项。
$zip -q archivename.zip filename1 filename2 filename3
$zip -r archivename.zip directory_name1 directory_name2 file1 file1
zip命令支持的模式,可用的压缩模式,valid compression methods are: store, deflate, bzip2。
deflate是默认的压缩方法,如果判断一个文件没法压缩,则使用store方法,直接将此文件存储到压缩文件里,而不进行压缩处理。
大部分Linux版本中的zip命令还支持bzip2压缩方法,使用-Z选项:
$ zip -r -Z bzip2 archivename.zip directory_name
使用bzip2压缩方法,文件后缀名还是zip,同样的文件,压缩后可能还会变大。
指定压缩级别:
zip命令允许你使用破折号后跟0到9的来指定压缩级别。默认的压缩级别是-6。 当使用-0时,所有的文件都将不经压缩而被存储。-9将强制zip命令对所有文件使用最佳的压缩方式。
比如:
$zip -9 -r archivename.zip directory_name
压缩级别越高,压缩过程的CPU占用就越多,需要更多的时间来完成。
创建密码来保护zip文件:
$zip -e archivename.zip directory_name
然后会提示你输入密码:
Enter password:
Verify password:
创建split zip file:
想象一下,你想把Zip档案存储在一个文件托管服务上,该服务的文件上传大小限制为1GB,而你的Zip档案是5GB。
你可以使用-s选项和指定的大小来创建一个新的分割Zip文件。乘数可以是k(千字节)、m(兆字节)、g(千兆字节)或t(太字节)。
k (kilobytes), m (megabytes), g (gigabytes), or t (terabytes).
$ zip -s 1g -r archivename.zip directory_name
上面的命令会在一组档案达到指定的大小限制后继续创建新档案:
输出:
archivename.zip
archivename.z01
archivename.z02
archivename.z03
archivename.z04
zip命令例子
压缩所有当前文件夹下面的内容:
$ zip archivename *
并包含隐藏文件:
$ zip archivename .* *
只包含MP3文件,并不进行压缩:
$ zip -0 archivename *.mp3
要解压zip文件的话,要使用unzip命令。如果要查看更多的zip命令相关信息,使用man zip,info zip或zip --help命令。
关于unzip
同样的,先安装:
$ sudo apt install unzip
或
$ sudo yum install unzip
语法:
$ unzip latest.zip
默认模式,unzip会打印出所有解压缩的文件的名字,还有解压结束后的summary。
使用-q选项,省略这些信息。
$unzip -q filename.zip
指定解压的文件夹
使用-d选项:
$sudo unzip filename.zip -d /path/to/directory
如上,我们使用了sudo,所以解压的文件的权限就属于root用户。
如果对指定文件夹有写权限,使用当前用户即可。
解压带密码的文件
$ unzip -P PasswOrd filename.zip
或者不使用-P参数,则会在命令行上提示输入密码。
过滤解压文件
使用-x选项,后面跟空格分隔的文件列表,表明不需要解压的文件:
$ unzip filename.zip -x file1-to-exclude file2-to-exclude
$ unzip filename.zip -x "*.git/*"
解压时直接覆盖
如果解压文件在当前文件夹已存在,使用-o选项,则会直接覆盖而不会提示。
$ unzip -o filename.zip
解压时不覆盖
$ unzip -n filename.zip
已经存在的文件不会被覆盖。
解压多个文件
如果要解压当前文件夹下的多个zip文件,使用下面的正则表达式 regular expression:
$unzip '*.zip'
显示zip文件的内容
$ unzip -l filename.zip
参考:
How to Install and Use 7zip on Ubuntu Linux
https://linuxize.com/post/how-to-zip-files-and-directories-in-linux/
https://linuxize.com/post/how-to-unzip-files-in-linux/
Linux - Ubuntu中使用7zip和zip命令相关推荐
- Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理
Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理 目录 Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理 一.简单介绍 二.常用命令 1. 打开终端 :Ctrl ...
- linux/ubuntu中制作deb安装包
linux/ubuntu中制作deb安装包 由于要制作一个在arm平台上运行的xorg-server-1.12.4版本的安装包,所以需要学习如何制作deb安装包.这里以一个非常小的工程为例,记录制作的 ...
- linux系统如何为软件升级,在Linux系统中怎样才能使用一个命令升级所有软件?...
今天小编要跟大家分享的有关Linux的文章中,是关于在Linux系统中怎样才能使用一个命令升级所有软件,熟悉Linux系统的小伙伴都知道,让我们的 Linux 系统保持最新状态会用到多种包管理器.比如 ...
- Ubuntu中常用的解/压缩命令
Ubuntu中常用的解/压缩命令 一..tar文件 二..tar.tgz文件 三..zip文件 四..rar文件 五..tar.gz文件 六..tgz文件 一..tar文件 # 解压 tar xvf ...
- linux系统中如何查看日志 (常用命令)
linux系统中如何查看日志 (常用命令) cat tail -f 日 志 文 件 说 明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用 ...
- 在linux中at 调度出错,linux系统中的调度延迟任务:at 命令
linux系统中的调度延迟任务:at 命令 主要概念 at命令可以使命令稍后运行 batch命令可以让命令在机器负载较低的情况下运行 可以直接进入命令,或者以脚本形式提交命令 作业中的标准输出用邮件发 ...
- php执行who命令,Linux_在Linux系统中使用who和whoami命令获取用户信息,who用法:who [选项]... [ 文件 | - phpStudy...
在Linux系统中使用who和whoami命令获取用户信息 who用法:who [选项]... [ 文件 | 参数1 参数2 ] 显示当前已登录的用户信息. -a, --all ...
- linux 查看磁盘信息命令行,Linux系统中查看磁盘空间信息的命令
Linux系统中磁盘空间的信息我们要怎么查看呢?下面由学习啦小编为大家整理了Linux系统中查看磁盘空间信息的命令,希望对大家有帮助! Linux系统中查看磁盘空间信息的命令:一.df -lh 命令 ...
- 查看linux网速的命令,Ubuntu中查看网速的命令
在这里我们要使用Linux系统中的查看网速的命令,指的是查看网卡此时是工作在哪种速度的模式下.因为通常现在的网卡都支持10M/100M/1000M的网速,但是具体的网卡速度工作模式,要根据计算机所处的 ...
- linux下查看进度命令,在Linux系统中使用Coreutils Viewer显示命令运行进度
Coreutils Viewer(cv)是一个简单的程序,它可以用于显示任何核心组件命令(如:cp.mv.dd.tar.gzip.gunzip.cat.grep.fgrep.egrep.cut.sor ...
最新文章
- python【数据结构与算法】二分归并模版
- 试用SpringBoot创建WEB应用
- centos7下的glusterfs的安装与使用
- 如何解决Http请求参数中加号变空格问题
- educoderpython答案顺序结构程序设计_答案汇总:土木机械类+计算机类
- 使用 jQuery Mobile 与 HTML5 开发 Web App (六) —— jQuery Mobile 内容格式
- leetcode 11容纳最多水
- python自动化测试学习有用吗_python自动化测试学习-UnitTest/PyUnit的用法介绍
- Sphinx 使用心得
- 怎样利用JDBC启动Oracle 自己主动追踪(auto trace)
- 【游戏开发创新】Unity狗屁不通文章生成器阐述点赞的意义,可生成文字长图保存到本地(Unity | 附源码 | Text转Texture长图 | 详细教程)
- C语言 16进制与字符串互转函数
- 在css表格怎么居中对齐,css居中和对齐方法集锦
- 电子信息产业发展研究院副主任杨春立:基于数字孪生的智慧城市顶层设计探索与实践...
- 数据库之系统的三级模式结构
- unity生涯的开始——太空飞船小游戏制作
- 四川大学计算机学院夏令营优秀,2018年四川大学全校各学院保研夏令营通知信息大汇总...
- MATLAB与高等数学--极限计算
- html表单验证方法,简述HTML交互式表单验证方法
- VScode CMake 编写 Boost Asio Chat程序----记录6