zip文件命令 linux,在Linux上压缩文件:zip命令的各种变体及用法

0a90c548bc95c438c792e4e53e1a95f1.png

除了压缩和解压缩文件外,你还可以使用 zip 命令执行许多有趣的操作。这是一些其他的 zip 选项以及它们如何提供帮助。

为了节省一些磁盘空间并将文件打包在一起进行归档,我们中的一些人已经在 Unix 和 Linux 系统上压缩文件数十年了。即使这样,并不是所有人都尝试过一些有趣的压缩工具的变体。因此,在本文中,我们将介绍标准的压缩和解压缩以及其他一些有趣的压缩选项。

基本的 zip 命令

首先,让我们看一下基本的 zip 命令。它使用了与 gzip 基本上相同的压缩算法,但是有一些重要的区别。一方面,gzip 命令仅用于压缩单个文件,而 zip 既可以压缩文件,也可以将多个文件结合在一起成为归档文件。另外,gzip 命令是“就地”压缩。换句话说,它会只留下一个压缩文件,而原始文件则没有了。 这是工作中的 gzip 示例:

$ gzip onefile

$ls-l

-rw-rw-r--1shs shs10514Jan1513:13onefile.gz

而下面是 zip。请注意,此命令要求为压缩存档提供名称,其中 gzip(执行压缩操作后)仅使用原始文件名并添加 .gz 扩展名。

$ zip twofiles.zipfile*

adding:file1(deflated82%)

adding:file2(deflated82%)

$ls-l

-rw-rw-r--1shs shs58021Jan1513:25file1

-rw-rw-r--1shs shs58933Jan1513:34file2

-rw-rw-r--1shs shs21289Jan1513:35twofiles.zip

请注意,原始文件仍位于原处。

所节省的磁盘空间量(即获得的压缩程度)将取决于每个文件的内容。以下示例中的变化很大。

$ zip mybin.zip~/bin/*

adding:bin/1(deflated26%)

adding:bin/append(deflated64%)

adding:bin/BoD_meeting(deflated18%)

adding:bin/cpuhog1(deflated14%)

adding:bin/cpuhog2(stored0%)

adding:bin/ff(deflated32%)

adding:bin/file.0(deflated1%)

adding:bin/loop(deflated14%)

adding:bin/notes(deflated23%)

adding:bin/patterns(stored0%)

adding:bin/runme(stored0%)

adding:bin/tryme(deflated13%)

adding:bin/tt(deflated6%)

unzip 命令

unzip 命令将从一个 zip 文件中恢复内容,并且,如你所料,原来的 zip 文件还保留在那里,而类似的 gunzip 命令将仅保留未压缩的文件。

$ unzip twofiles.zip

Archive:twofiles.zip

inflating:file1

inflating:file2

$ls-l

-rw-rw-r--1shs shs58021Jan1513:25file1

-rw-rw-r--1shs shs58933Jan1513:34file2

-rw-rw-r--1shs shs21289Jan1513:35twofiles.zip

zipcloak 命令

zipcloak 命令对一个 zip 文件进行加密,提示你输入两次密码(以确保你不会“胖手指”),然后将该文件原位存储。你可以想到,文件大小与原始文件会有所不同。

$ zipcloak twofiles.zip

Enterpassword:

Verifypassword:

encrypting:file1

encrypting:file2

$ls-l

total204

-rw-rw-r--1shs shs58021Jan1513:25file1

-rw-rw-r--1shs shs58933Jan1513:34file2

-rw-rw-r--1shs shs21313Jan1513:46twofiles.zip<==slightly larger than

unencrypted version

请记住,压缩包之外的原始文件仍处于未加密状态。

zipdetails 命令

zipdetails 命令将向你显示详细信息:有关压缩文件的详细信息,可能比你想象的要多得多。即使我们正在查看一个加密的文件,zipdetails 也会显示文件名以及文件修改日期、用户和组信息、文件长度数据等。请记住,这都是“元数据”。我们看不到文件的内容。

$ zipdetails twofiles.zip

0000LOCAL HEADER#104034B50

0004ExtractZipSpec14'2.0'

0005ExtractOS00'MS-DOS'

0006GeneralPurposeFlag0001

[Bit0]1'Encryption'

[Bits1-2]1'Maximum Compression'

0008CompressionMethod0008'Deflated'

000ALastModTime4E2F6B24'Tue Jan 15 13:25:08 2019'

000ECRC F1B115BD

0012CompressedLength00002904

0016UncompressedLength0000E2A5

001AFilenameLength0005

001CExtraLength001C

001EFilename'file1'

0023ExtraID#00015455'UT: Extended Timestamp'

0025Length0009

0027Flags'03 mod access'

0028ModTime5C3E2584'Tue Jan 15 13:25:08 2019'

002CAccessTime5C3E27BB'Tue Jan 15 13:34:35 2019'

0030ExtraID#00027875'ux: Unix Extra Type 3'

0032Length000B

0034Version01

0035UIDSize04

0036UID000003E8

003AGIDSize04

003BGID000003E8

003FPAYLOAD

2943LOCAL HEADER#204034B50

2947ExtractZipSpec14'2.0'

2948ExtractOS00'MS-DOS'

2949GeneralPurposeFlag0001

[Bit0]1'Encryption'

[Bits1-2]1'Maximum Compression'

294BCompressionMethod0008'Deflated'

294DLastModTime4E2F6C56'Tue Jan 15 13:34:44 2019'

2951CRC EC214569

2955CompressedLength00002913

2959UncompressedLength0000E635

295DFilenameLength0005

295FExtraLength001C

2961Filename'file2'

2966ExtraID#00015455'UT: Extended Timestamp'

2968Length0009

296AFlags'03 mod access'

296BModTime5C3E27C4'Tue Jan 15 13:34:44 2019'

296FAccessTime5C3E27BD'Tue Jan 15 13:34:37 2019'

2973ExtraID#00027875'ux: Unix Extra Type 3'

2975Length000B

2977Version01

2978UIDSize04

2979UID000003E8

297DGIDSize04

297EGID000003E8

2982PAYLOAD

5295CENTRAL HEADER#102014B50

5299CreatedZipSpec1E'3.0'

529ACreatedOS03'Unix'

529BExtractZipSpec14'2.0'

529CExtractOS00'MS-DOS'

529DGeneralPurposeFlag0001

[Bit0]1'Encryption'

[Bits1-2]1'Maximum Compression'

529FCompressionMethod0008'Deflated'

52A1LastModTime4E2F6B24'Tue Jan 15 13:25:08 2019'

52A5CRC F1B115BD

52A9CompressedLength00002904

52ADUncompressedLength0000E2A5

52B1FilenameLength0005

52B3ExtraLength0018

52B5CommentLength0000

52B7DiskStart0000

52B9IntFileAttributes0001

[Bit0]1TextData

52BBExtFileAttributes81B40000

52BFLocalHeaderOffset00000000

52C3Filename'file1'

52C8ExtraID#00015455'UT: Extended Timestamp'

52CALength0005

52CCFlags'03 mod access'

52CDModTime5C3E2584'Tue Jan 15 13:25:08 2019'

52D1ExtraID#00027875'ux: Unix Extra Type 3'

52D3Length000B

52D5Version01

52D6UIDSize04

52D7UID000003E8

52DBGIDSize04

52DCGID000003E8

52E0CENTRAL HEADER#202014B50

52E4CreatedZipSpec1E'3.0'

52E5CreatedOS03'Unix'

52E6ExtractZipSpec14'2.0'

52E7ExtractOS00'MS-DOS'

52E8GeneralPurposeFlag0001

[Bit0]1'Encryption'

[Bits1-2]1'Maximum Compression'

52EACompressionMethod0008'Deflated'

52ECLastModTime4E2F6C56'Tue Jan 15 13:34:44 2019'

52F0CRC EC214569

52F4CompressedLength00002913

52F8UncompressedLength0000E635

52FCFilenameLength0005

52FEExtraLength0018

5300CommentLength0000

5302DiskStart0000

5304IntFileAttributes0001

[Bit0]1TextData

5306ExtFileAttributes81B40000

530ALocalHeaderOffset00002943

530EFilename'file2'

5313ExtraID#00015455'UT: Extended Timestamp'

5315Length0005

5317Flags'03 mod access'

5318ModTime5C3E27C4'Tue Jan 15 13:34:44 2019'

531CExtraID#00027875'ux: Unix Extra Type 3'

531ELength000B

5320Version01

5321UIDSize04

5322UID000003E8

5326GIDSize04

5327GID000003E8

532BENDCENTRAL HEADER06054B50

532FNumberofthisdisk0000

5331CentralDirDiskno0000

5333Entriesinthisdisk0002

5335TotalEntries0002

5337SizeofCentralDir00000096

533BOffsettoCentralDir00005295

533FCommentLength0000

Done

zipgrep命令

zipgrep 命令将使用 grep 类的功能来找到压缩文件中的特定内容。如果文件已加密,则需要为要检查的每个文件输入为加密所提供的密码。如果只想检查归档文件中单个文件的内容,请将其名称添加到 zipgrep 命令的末尾,如下所示。

$ zipgrep hazard twofiles.zip file1

[twofiles.zip]file1 password:

Certainpesticides should be banned since they are hazardous to the environment.

zipinfo 命令

zipinfo 命令提供有关压缩文件内容的信息,无论是否加密。这包括文件名、大小、日期和权限。

$ zipinfo twofiles.zip

Archive:twofiles.zip

Zipfilesize:21313bytes,number of entries:2

-rw-rw-r--3.0unx58021TxdefN19-Jan-1513:25file1

-rw-rw-r--3.0unx58933TxdefN19-Jan-1513:34file2

2files,116954bytes uncompressed,20991bytes compressed:82.1%

zipnote 命令

zipnote 命令可用于从 zip 归档中提取注释或添加注释。要显示注释,只需在命令前面加上归档名称即可。如果之前未添加任何注释,你将看到类似以下内容:

$ zipnote twofiles.zip

@file1

@(comment abovethisline)

@file2

@(comment abovethisline)

@(zipfilecomment belowthisline)

如果要添加注释,请先将 zipnote 命令的输出写入到文件:

$ zipnote twofiles.zip>comments

接下来,编辑你刚刚创建的文件,将注释插入到 (comment above this line) 行上方。然后使用像这样的 zipnote 命令添加注释:

$ zipnote-wtwofiles.zip

zipsplit 命令

当归档文件太大时,可以使用 zipsplit 命令将一个 zip 归档文件分解为多个 zip 归档文件,这样你就可以将其中某一个文件放到小型 U 盘中。最简单的方法似乎是为每个部分的压缩文件指定最大大小,此大小必须足够大以容纳最大的所包含的文件。

$ zipsplit-n12000twofiles.zip

2zip files will be made(100%efficiency)

creating:twofile1.zip

creating:twofile2.zip

$lstwofile*.zip

-rw-rw-r--1shs shs10697Jan1514:52twofile1.zip

-rw-rw-r--1shs shs10702Jan1514:52twofile2.zip

-rw-rw-r--1shs shs21377Jan1514:27twofiles.zip

请注意,提取的文件是如何依次命名为 twofile1 和 twofile2 的。

总结

zip 命令及其一些压缩工具变体,对如何生成和使用压缩文件归档提供了很多控制。

【编辑推荐】

【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值