首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
函数参数与返回值
传递变长参数
defer 和追踪
内置函数
递归函数
将函数作为参数
闭包
应用闭包:将函数作为返回值
使用闭包调试
计算函数执行时间
通过内存缓存来提升性能
声明和初始化
切片
For-range 结构
切片重组(reslice)
切片的复制与追加
字符串、数组和切片的应用
声明、初始化和 make
测试键值对是否存在及删除元素
for-range 的配套用法
map 类型的切片
map 的排序
将 map 的键值对调
标准库概述
regexp 包
锁和 sync 包
精密计算和 big 包
自定义包和可见性
为自定义包使用 godoc
使用 go install 安装自定义包
自定义包的目录结构、go install 和 go test
通过 Git 打包和安装
Go 的外部包和项目
在 Go 程序中使用外部库
结构体定义
使用工厂方法创建结构体实例
使用自定义包中的结构体
带标签的结构体
匿名字段和内嵌结构体
方法
类型的 String() 方法和格式化描述符
垃圾回收和 SetFinalizer
当前位置:
首页>>
技术小册>>
go编程权威指南(二)
小册名称:go编程权威指南(二)
文件压缩与解压 ======= 前面小节介绍了如何对文件和目录删除、移动操作,本小节介绍如何使用命令对文件和目录进行压缩与解压操作,常见的压缩包格式有`.tar`、`.bz2`、`.Z`、`.gz`、`.zip`、`.xz`,压缩之后的文件或目录占用更少的空间。 1\. tar 命令介绍 ------------ 下面列举 `tar` 命令的参数: | tar 命令参数名称 | 功能与作用描述 | | :-- | :-- | | \-c | 新建立压缩档案 | | \-x | 解压缩 | | \-t | 查看内容 | | \-u | 更新原压缩包的内容 | | \-z | `gzip` 属性的 | | \-j | `bz2` 属性的 | | \-Z | `compress` 属性的 | | \-v | 显示所有过程 | | \-O | 将文件解压缩成标准输出形式 | | \-f | 使用档案名字,此参数都是在最后,其后面跟上一个档案的名字 | > **Tips**:其中 `-c`、`-x`、`-t`、`-u` 这几个参数是独立的,每次使用选其中一个,`-f` 是最后一个参数,后面跟上档案名。 ### 1.1 将指定类型文件打包成 tar 包 为了演示方便,先切入到 `/home` 目录下,使用 `touch` 命令创建几个 `.txt` 文件,然后使用 `tar` 命令将其打包,命令如下: cd /home touch a.txt b.txt c.txt d.txt e.txt ls -l tar -cf alltxt.tar *.txt ls -l > **Tips**:其中 `alltxt.tar` 是一个自定义名称,后缀是 `tar` ,前半部分的名字可自行定义, `*.txt` 中的 `*` 表示通配符代表所有的意思。 ### 1.2 向现有的 tar 包中新增文件 这里再使用 `touch` 命令创建一个 `g.txt` 文件,使用 `tar` 命令将其新增至 `alltxt.tar` 中,-r参数表示append,追加。命令如下: touch g.txt tar -rf alltxt.tar g.txt ### 1.3 更新 原来 tar 包中的文件 使用 `rm` 命令删除 `/home` 目录中的 `a.txt` ,然后新建一个 `a.txt` 表示为更新后的 `a.txt`,使用 `tar` 命令将 `a.txt` 更新至 `alltxt.tar` 中,命令如下: rm -f a.txt touch a.txt tar -uf alltxt.tar a.txt > **Tips**:若 `alltxt.tar` 中没有 `a.txt`,那么使用 `tar -uf` 就会将 `a.txt` 新增到 `alltxt.tar` 中。 ### 1.4 列出 tar 包中打包的所有文件 这里为了演示方便,将 `/home` 目录原有的 `.txt` 文件全都删除掉,然后使用 `tar` 命令查看 `alltxt.tar` 中所有文件列表,命令如下: ls rm -f *.txt ls tar -tf alltxt.tar ### 1.5 解开 tar 包中所有文件 接着上面的内容,可以使用 `tar` 命令将 `alltxt.tar` 解开把文件释放到当前目录,命令如下: ls tar -xf alltxt.tar ls ### 1.6 使用 tar 命令压缩 上面打包的 `alltxt.tar` 文件并没有压缩文件,只是把文件都打包在一起,如下命令可以把 `alltxt.tar` 压缩成为不同格式的压缩包: ls tar -czf alltxt.tar.gz alltxt.tar ls tar -cjf alltxt.tar.bz2 alltxt.tar ls tar -cZf alltxt.tar.Z alltxt.tar ls > **Tips**:命令中参数的含义可参考前面参数表格中的功能描述。 ### 1.7 使用 tar 命令解压缩 为了演示方便,防止混淆,先将 `alltxt.tar.gz`、`alltxt.tar.bz2`、`alltxt.tar.Z` 三种格式压缩包移动至 `study` 目录,然后使用 `tar` 命令解压,命令如下: ls mv alltxt.tar.gz study/ mv alltxt.tar.bz2 study/ mv alltxt.tar.Z study/ cd study/ ls 如上所示,将需要解压的三种格式压缩包移动至 `/home/study` 目录中,下面对其解压缩,命令如下: ls tar -zxvf alltxt.tar.gz ls rm -f alltxt.tar ls tar -jxvf alltxt.tar.bz2 ls rm -f alltxt.tar ls tar -Zxvf alltxt.tar.Z ls > **Tips**:命令中参数的含义可参考前面参数表格中的功能描述。 2\. zip 格式压缩与解压 --------------- CentOS 8 系统中自带 `zip`、`unzip` 压缩与解压工具,可以使用 `zip -v`、`unzip -v` 命令查看当前是否安装 `zip`、`unzip` 工具,若是没有安装,则可以使用如下命令安装: yum -y install zip unzip Ubuntu系统中如果没有安装zip和unzip,使用下面命令安装: ```bash sudo apt install zip unzip ``` ### 2.1 使用 zip 压缩文件 使用 `zip` 命令可以将 `alltxt.tar` 包压缩为 `.zip` 压缩包,命令如下: ls zip alltxt.zip alltxt.tar ls > **Tips**:可以使用 `zip -r zip包名 目录名` 递归压缩目录以及目录中所有文件。 ### 2.2 使用 unzip 解压缩 为了演示方便,先将 `alltxt.zip` 文件移动至 `/home/study` 中,然后解压,命令如下: ls mv alltxt.zip study/ cd study/ ls unzip alltxt.zip ls 3\. 小结 ------ 本小节介绍了如何使用 `tar` 命令打包文件和解开 `tar` 包,还介绍了如何使用 `tar` 将文件包压缩为 `.gz`、`.bz2`、`.Z` 格式的压缩包,如何解压缩它们,最后还介绍了如何使用 `zip`、`unzip` 工具压缩与解压 `.zip` 格式的压缩包,需要注意的是使用 `tar` 命令将文件打包成 `tar` 包之后,文件并没有被压缩,只是打包在一起了,压缩文件前,也可以不打包成 `tar` 包,可以直接对某个文件和目录进行压缩。
上一篇:
mv移动文件和目录
下一篇:
文件和目录重命名
该分类下的相关小册推荐:
Go进阶之分布式爬虫实战
Go-Web编程实战
深入浅出Go语言核心编程(一)
深入浅出Go语言核心编程(六)
Go开发权威指南(下)
深入解析go语言
Go 组件设计与实现
Golang并发编程实战
WebRTC音视频开发实战
Go Web编程(上)
Go Web编程(下)
Go开发权威指南(上)