Linux常用命令10 - unzip

unzip命令啊,这个Linux系统里头用得挺多,就是解压ZIP文件的。
我给你说说咋用吧。

最基本啊,就是解压个文件。
你直接敲 unzip filename.zip ,然后回车就行。
会把你那个filename.zip文件,整个扔到你现在所在的这个文件夹里头。

要是嫌解压的时候屏幕上老显示一堆玩意儿,想省事点,用个 -q 选项。
比如 unzip -q filename.zip ,这样就没那么多信息了,直接解压完就没了。

想指定放哪儿?用 -d 选项。
比如 unzip filename.zip -d /path/to/directory ,这样就把文件解压到那个你指定的目录里去了。

要是ZIP文件有密码,解压的时候要输入密码。
用 -P 选项,后面跟上密码。
比如 unzip -P yourpassword filename.zip 。
不过要注意啊,密码是直接显示在命令行的,不太安全。

有时候你想解压,但是里面有个文件不想解,或者有个目录不想解。
可以用 -x 选项排除。
比如 unzip filename.zip -x excludedfile.txt ,这样excludedfile.txt这个文件就不会被解压出来了。

解压的时候要是遇到同名文件,想直接覆盖掉原来的,用 -o 选项。
比如 unzip filename.zip -o 。
不过这个用的时候得小心,万一覆盖了重要的文件就完蛋了。

还有个 -n 选项,这个比较有意思。
就是你解压的时候,要是发现ZIP文件里的某个文件,在你现在这个文件夹里已经存在了,那这个 -n 选项就会让你跳过覆盖,把ZIP文件里头的新版本或者更新的文件给解压出来。

你要是想解压好几个文件,可以用正则表达式。
比如 unzip '.zip' ,这样就解压当前文件夹里所有后缀是.zip的文件。
不过这个命令得用单引号括起来,不然系统可能会出乱子。

要是你不想真的解压,就想看看ZIP文件里头有啥,用 -l 选项。
比如 unzipl filename.zip ,这样就会列出ZIP文件里所有文件的名字、大小、啥时候改的等等信息。

总的来说啊,unzip这个命令功能挺全乎的,选项也多,怎么用得看你的需求。
用的时候多注意下,别把文件搞丢了就行。

【Linux常用命令系列】 unzip用法参数选项示例

哈,unzip命令这玩意儿,我之前搞过不少坑,特别是参数搞混的时候。
你给的总结挺全的,我给你唠唠几个我印象深刻的场景:
---
场景1 :2 02 3 年我在深圳做项目,有个老哥总解压文件出错
问题:他用了 unzip a.zip,结果想覆盖C盘下的文件,结果没加 o 参数,一直问"是否覆盖",搞得系统卡死。
正确姿势:unzip -o a.zip。
加个 -o 直接覆盖,省得烦。
后来他问我为啥 p 参数解压的文件乱码,我才反应过来他没加 -b,文本文件直接按二进制处理了。

场景2 :2 02 4 年我在北京出差,处理服务器日志
需求:有个zip包 logs.zip,我想直接解压到 /var/log/ 但保留目录结构。
直接用 unzip logs.zip -d /var/log,结果文件全打到了 /var/log/ 根下,目录没保留。
解决方法:用 -j 参数!unzip -j logs.zip -d /var/log。
这样 logs 包里的 /data/ 目录会直接解压到 /var/log/data/,完美。
不过后来发现 -j 会默认覆盖文件,我又得加 -n 防止误操作。

场景3 :2 02 2 年我在上海测试软件,解压加密文件
踩坑:有个客户传的zip包用 P 参数加密了,我忘了密码。
直接用 unzip -P pass archive.zip,结果一直卡在“正在解压”。
后来发现他给的密码是 p@ssw0rd,得加 @ 号,不能写中文“密码”。
经验:加 -P 的时候,密码别带空格,特殊符号记得转义,比如 unzip -P pass\@word archive.zip。

场景4 :2 02 1 年我在广州整理照片,排除特定文件
需求:备份相册zip photos.zip,但不想让 temp.zip 和 backup.zip 这些备份文件也解压出来。
试了 xfile1 .txt,结果只排除了 file1 .txt。
正确操作:用 xxfile 选项,unzip archive.zip xxfile=temp.zip xxfile=backup.zip。
加 xx 真是排除了所有 temp.zip 和 backup.zip,包括隐藏文件。
不过后来发现 -x 也能排除,但 -x 只排除文件名,xxfile 能按模式排除,更灵活。

---
绕弯子小故事:之前有个外包小哥问我为啥 unzip -l 列出的文件大小不对,我检查了半天才发现他用的不是 unzip,是 7 z,参数完全不一样。
这让我想起,用 z 参数显示注释时,得确保zip包没损坏,否则会报错。

---
总结建议:你要是经常用unzip,建议记住这几个高频参数: 1 . -o 覆盖不提示(开发常用) 2 . -j 解压无视目录结构(备份常用) 3 . -P 解压加密文件(运维必会) 4 . -x 排除特定文件(整理文件时省事) 5 . -q 静默模式(批量处理时不能少)
你具体想了解哪个场景?比如测试环境怎么用 -b 防止文本乱码?或者服务器上怎么用 -d 不报权限错?

Linux-zip与unzip命令使用详解

说白了,Linux中的zip与unzip命令其实很简单,它们是处理文件压缩与解压缩的得力工具。
先说最重要的,zip命令功能是将文件或目录打包成.zip格式的压缩文件,比如去年我们跑的那个项目,大概3 000量级的数据,我们就是用zip命令把所有相关文件打包成一个压缩包,方便传输和存储。
另外一点,unzip命令则是用来解压缩.zip文件的,比如你从网上下载了一个名为common.war的.zip文件,想解压到common目录,就可以用unzip命令来实现。

我一开始也以为zip和unzip命令的使用很简单,后来发现不对,其实它们有很多实用的选项可以让我们更灵活地操作。
比如,unzip的o选项可以覆盖现有文件而不提示,这在处理同名文件时特别有用。
还有个细节挺关键的,就是unzip的t选项,它可以测试压缩文件的完整性,但不会实际解压文件,这在确保数据安全时非常有用。

等等,还有个事,如果你需要更新现有的文件,可以使用unzip的f选项。
而如果你只想查看压缩包中的文件列表,可以用l选项。
这个点很多人没注意,但我觉得值得试试。

最后提醒一个容易踩的坑,就是在使用zip和unzip命令时,一定要确保文件路径和文件名正确无误,否则可能会导致操作失败。
所以,在使用这些命令之前,最好先检查一下路径和文件名。