Skip to content
← 返回文件与文本处理列表
文件与文本处理任务与配置

命令与脚本:压缩、归档与备份 · 压缩单文件、转换格式与运行压缩内容至加密归档 ​

返回分篇目录

压缩单文件、转换格式与运行压缩内容 ​

gzip、xz、zstd 面向压缩数据流;znew 转换旧格式,zrun 解压后运行其他命令。不要把压缩流与多文件归档混为同一操作。

gzip · 使用 gzip (LZ77) 压缩/解压文件 ​

更多信息:https://www.gnu.org/software/gzip/manual/gzip.html。

  • 压缩文件,将其替换为 gzip 存档文件:
bash
gzip {{路径/到/文件}}
  • 解压缩文件,将其替换为原始未压缩版本:
bash
gzip {{[-d|--decompress]}} {{路径/到/文件.gz}}
  • 压缩文件,保留原始文件:
bash
gzip {{[-k|--keep]}} {{路径/到/文件}}
  • 压缩文件,指定输出文件名:
bash
gzip {{[-c|--stdout]}} {{路径/到/文件}} > {{路径/到/压缩文件.gz}}
  • 解压缩 gzip 存档,指定输出文件名:
bash
gzip {{[-c|--stdout]}} {{[-d|--decompress]}} {{路径/到/文件.gz}} > {{路径/到/解压缩的文件名}}
  • 指定压缩级别。 1 为最快(低压缩率),9 为最慢(高压缩率),默认值是 6:
bash
gzip -{{1..9}} {{[-c|--stdout]}} {{路径/到/文件}} > {{路径/到/压缩文件.gz}}
  • 显示压缩或解压后的每个文件的名称和压缩百分比:
bash
gzip {{[-v|--verbose]}} {{[-d|--decompress]}} {{路径/到/文件.gz}}

xz · 解压缩 XZ 和 LZMA 文件 ​

更多信息:https://manned.org/xz。

  • 使用 xz 压缩文件:
bash
xz {{路径/到/文件}}
  • 解压 XZ 文件:
bash
xz {{[-d|--decompress]}} {{路径/到/文件.xz}}
  • 使用 lzma 压缩文件:
bash
xz {{[-F|--format]}} lzma {{路径/到/文件}}
  • 解压 LZMA 文件:
bash
xz {{[-d|--decompress]}} {{[-F|--format]}} lzma {{路径/到/文件.lzma}}
  • 解压文件并输出到 stdout(暗示 --keep):
bash
xz {{[-d|--decompress]}} {{[-c|--stdout]}} {{路径/到/文件.xz}}
  • 压缩文件但不删除原文件:
bash
xz {{[-k|--keep]}} {{路径/到/文件}}
  • 使用最快方式压缩文件:
bash
xz -0 {{路径/到/文件}}
  • 使用最好方式压缩文件:
bash
xz -9 {{路径/到/文件}}

zstd · 使用 Zstandard 压缩来压缩 / 解压文件 ​

更多信息:https://manned.org/zstd。

  • 将一个文件压缩到一个 .zst 后缀的压缩文件中:
bash
zstd {{file}}
  • 解压缩一个文件:
bash
zstd --decompress {{file.zst}}
  • 将文件解压缩到标准输出(stdout):
bash
zstd --decompress --stdout {{file.zst}}
  • 使用指定常规压缩等级(本例填写 1 到 19,默认 3):
bash
zstd -{{level}} {{file}}
  • 使用更多内存(解压或压缩时)来得到更高的压缩比:
bash
zstd --ultra -{{level}} {{file}}

zlib-flate · 原始 zlib 压缩和解压缩程序 ​

qpdf 的一部分。 更多信息:https://manned.org/zlib-flate。

  • 压缩一个文件:
bash
zlib-flate < {{路径/到/输入_文件}} -compress > {{路径/到/压缩.zlib}}
  • 解压缩一个文件:
bash
zlib-flate < {{路径/到/压缩.zlib}} -uncompress > {{路径/到/输出_文件}}
  • 使用指定的压缩级别压缩文件。0=最快(最差),9=最慢(最佳):
bash
zlib-flate < {{路径/到/输入_文件}} -compress={{压缩级别}} > {{路径/到/压缩.zlib}}

znew · 将文件从 .Z 格式重新压缩为 gzip 格式 ​

更多信息:https://manned.org/znew。

  • 将文件从 .Z 格式重新压缩为 gzip 格式:
bash
znew {{路径/到/文件1.Z}}
  • 重新压缩多个文件,并显示每个文件所实现的压缩率%:
bash
znew -v {{路径/到/文件1.Z 路径/到/文件2.Z ...}}
  • 使用最慢的压缩方法重新压缩文件(以获得最佳压缩效果):
bash
znew -9 {{路径/到/文件1.Z}}
  • 重新压缩文件,如果 .Z 文件比 gzip 文件小,则保留 .Z 文件:
bash
znew -K {{路径/到/文件1.Z}}

zrun · 透明地将压缩的参数文件解压缩并传递给某个命令 ​

更多信息:https://manned.org/zrun。

  • 使用解压后的压缩参数文件运行指定命令:
bash
zrun {{cat 路径/到/文件1.gz 路径/到/文件2.bz2 ...}}

不解包查看、搜索和比较 ​

只需检查内容时,先用 zipinfo 或分页工具;按内容检索见 zgrep/zipgrep,比较差异见 zcmp/zdiff。

zipinfo · 列出 Zip 文件内容的详细信息 ​

更多信息:https://manned.org/zipinfo。

  • 以长格式(权限、所有权、大小和修改日期)列出 Zip 文件中的所有文件:
bash
zipinfo {{路径/到/压缩包.zip}}
  • 列出 Zip 文件中的所有文件:
bash
zipinfo -1 {{路径/到/压缩包.zip}}

zless · 查看 gzip 和 xz 压缩文件 ​

更多信息:https://manned.org/zless。

  • 使用 less 分页查看一个 gzip 压缩文件:
bash
zless {{文件.txt.gz}}

zmore · 使用 more 查看 gzip 压缩文件 ​

更多信息:https://manned.org/zmore。

  • 打开一个压缩文件:
bash
zmore {{路径/到/文件.txt.gz}}
  • 显示文件的下一页:
bash
<Space>
  • 在文件中搜索一个模式(按 <n> 跳转到下一个匹配项):
bash
</>{{正则表达式}}
  • 退出:
bash
<q>
  • 显示交互式命令帮助:
bash
<h>

zstdless · 打开一个 zstd 压缩文件进行交互式阅读,允许滚动和搜索 ​

另请参阅:zstd, less。 更多信息:https://manned.org/zstdless。

  • 打开一个 zstd 压缩文件:
bash
zstdless {{路径/到/文件.zst}}

zgrep · 解压后搜索文本模式(grep -Z 输出 NUL 分隔文件名,与解压无关) ​

更多信息:https://manned.org/zgrep。

  • 在压缩文件中 grep 一个模式(区分大小写):
bash
zgrep {{模式}} {{路径/到/压缩/文件}}
  • 在压缩文件中 grep 一个模式(不区分大小写):
bash
zgrep -i {{模式}} {{路径/到/压缩/文件}}
  • 输出包含匹配模式的行数:
bash
zgrep -c {{模式}} {{路径/到/压缩/文件}}
  • 显示不包含该模式的行(反转搜索功能):
bash
zgrep -v {{模式}} {{路径/到/压缩/文件}}
  • 在压缩文件中为多个模式执行 grep:
bash
zgrep -e "{{模式_1}}" -e "{{模式_2}}" {{路径/到/压缩/文件}}
  • 使用扩展的正则表达式(支持 ?、+、{}、() 和 |):
bash
zgrep -E {{正则表达式}} {{路径/到/文件}}
  • 打印每个匹配项前后各 3 行的上下文([C]ontent)、[B]efore 或 [A]fter:
bash
zgrep -{{C|B|A}} {{3}} {{模式}} {{路径/到/压缩/文件}}

zipgrep · 在 Zip 压缩档案中的文件中使用扩展正则表达式查找模式(支持 ?、+、{}、() 和 |) ​

在 Zip 压缩档案中的文件中使用扩展正则表达式查找模式(支持 ?、+、{}、() 和 |)。 更多信息:https://manned.org/zipgrep。

  • 在 Zip 压缩档案中搜索一个模式:
bash
zipgrep "{{搜索模式}}" {{路径/到/文件.zip}}
  • 打印匹配的文件名和行号:
bash
zipgrep {{[-H|--with-filename]}} {{[-n|--line-number]}} "{{搜索模式}}" {{路径/到/文件.zip}}
  • 搜索与模式不匹配的行:
bash
zipgrep {{[-v|--invert-match]}} "{{搜索模式}}" {{路径/到/文件.zip}}
  • 指定在 Zip 压缩档案中要搜索的文件:
bash
zipgrep "{{搜索模式}}" {{路径/到/文件.zip}} {{要搜索的文件1}} {{要搜索的文件2}}
  • 排除在 Zip 压缩档案中要搜索的文件:
bash
zipgrep "{{搜索模式}}" {{路径/到/文件.zip}} -x {{要排除的文件1}} {{要排除的文件2}}

zcmp · 比较压缩文件 ​

更多信息:https://manned.org/zcmp。

  • 对两个通过 gzip 压缩的文件运行 cmp 命令:
bash
zcmp {{路径/到/文件1.gz}} {{路径/到/文件2.gz}}
  • 将一个文件与其 gzipped 版本进行比较(假设 .gz 已存在):
bash
zcmp {{路径/到/文件}}

zdiff · 对 gzip 压缩文件调用 diff ​

更多信息:https://manned.org/zdiff。

  • 比较两个文件,必要时解压它们:
bash
zdiff {{路径/到/文件1.gz}} {{路径/到/文件2.gz}}
  • 将文件与同名的 gzip 压缩文件进行比较:
bash
zdiff {{路径/到/文件}}

zipnote · 查看、添加或编辑 Zip 压缩包的注释 ​

文件在 Zip 压缩包中也可以被重命名。 更多信息:https://manned.org/zipnote。

  • 查看 Zip 压缩包中的注释:
bash
zipnote {{路径/到/文件.zip}}
  • 将 Zip 压缩包中的注释提取到一个文件:
bash
zipnote {{路径/到/文件.zip}} > {{路径/到/文件.txt}}
  • 从一个文件中添加/更新 Zip 压缩包中的注释:
bash
zipnote < {{路径/到/文件.txt}} -w {{路径/到/文件.zip}}

加密归档 ​

gpg-zip 使用 GPG 保护归档,zipcloak 处理 ZIP 加密;具体格式和密钥方式按接收端选择。

gpg-zip · 使用GPG加密存档中的文件和目录 ​

更多信息:https://www.gnupg.org/documentation/manuals/gnupg/gpg_002dzip.html。

  • 使用密码将一个目录加密为archive.gpg:
bash
gpg-zip {{[-c|--symmetric]}} {{[-o|--output]}} {{archive.gpg}} {{path/to/directory}}
  • 解密并提取 archive.gpg 中的内容(使用前确认成员路径和目标目录):
bash
gpg-zip {{[-d|--decrypt]}} {{path/to/archive.gpg}}
  • 列出加密的archive.gpg的内容:
bash
gpg-zip --list-archive {{path/to/archive.gpg}}

zipcloak · 加密 Zip 压缩档案内的内容 ​

更多信息:https://manned.org/zipcloak。

  • 加密一个 Zip 压缩档案的内容:
bash
zipcloak {{路径/到/压缩档案.zip}}
  • [d]解密一个 Zip 压缩档案的内容:
bash
zipcloak {{[-d|--decrypt]}} {{路径/到/压缩档案.zip}}
  • [O]将加密内容输出到一个新的 Zip 压缩档案中:
bash
zipcloak {{路径/到/压缩档案.zip}} {{[-O|--output-file]}} {{路径/到/加密.zip}}

继续阅读