也许这是第一世界问题的顶峰,但经过多年的焦虑,我只需要播出这一点。
假设您已下载funtool.zip
到您的~/Downloads
文件夹中。您有两种选择,每种都有两种可能的结果,具体取决于存档是否具有正确的根文件夹。
unzip funtool
. 可能的结果:
~/Downloads/funtool/(files)
- 好的~/Downloads/(lots of files)
——啊!下载文件夹乱七八糟
unzip funtool -d funtool
. 可能的结果:
~/Downloads/funtool/funtool/(files)
-- 双文件夹。恼人的!~/Downloads/funtool/(files)
- 好的
我已经看到一些 GUI 解压缩器为此内置了智能,但我是 CLI 专家。我的解决方案是检查根文件夹unzip -t funtool
并采取相应措施。但多年后,我已经拥有了。
是否有脚本或其他东西可以自动执行此操作,甚至对于rar
文件,甚至可能7z
?至少这是一件tar
似乎每次都正确的事情,也许是因为良好的惯例。
作为各种存档格式的 CLI 前端,
unp
使用一个命令解压缩(几乎)所有内容。它声称有以下选择:
这听起来很接近您正在寻找的行为。
但是,
-U
如果它是一个带有单个文件的 ZIP 文件,该文件与 zipfile 本身的名称没有任何关系,则该模式仍然会乱扔单个文件。7z
可以做到这一点,至少如果存档中的根目录(如果有)与您要提取到的目录的名称匹配:如果
funtool.zip
的内容都funtool
在存档的目录中,7z
则不会复制下面的目录funtool
,从而为您提供所需的结果。有命令行工具dtrx,它能够提取任何类型的压缩文件。默认情况下,所有内容都将写入以存档命名的专用目录。
只需运行
如果您有基于 Debian 的发行版,您可以在 APT 存储库中找到它。