与数量不断增加归档/压缩文件格式,是否有一个免费/开源命令行工具来统治它们?也许有一组一致/统一的标志? (注意我的友好对 tar 的隐式引用)
我曾经遇到过一组别名,旨在很大程度上简化绑定到tar
其他实用程序的压缩/解压缩文件的任务,但我再也找不到它了。
更新:
我如何配置类似atool
不用于unzip
提取 zip 文件(显然无法处理大于 4GB 的文件)并使用它gunzip
?
$ aunpack large_file.zip
error: Zip file too big (greater than 4294959102 bytes)
Archive: large_file.zip
warning [large_file.zip]: 1491344848 extra bytes at beginning or within zipfile
(attempting to process anyway)
error [large_file.zip]: start of central directory not found;
zipfile corrupt.
(please check that you have transferred or created the zipfile in the
appropriate BINARY mode and that you have compiled UnZip properly)
aunpack: unzip ...: non-zero return-code
答案1
我用一个工具。它完成了这项工作。它适用于许多(但不是所有)格式:
tar、gzip、bzip2、bzip、lzip、lzop、lzma、zip、rar、lha、arj、arc、p7zip 等。
这些压缩工具仍然是需要的,尽管工具只是它们的前端。
我特别喜欢als
它提供的命令,它列出了任何支持的存档格式的内容。
主atool
命令使用自己的标志来提取档案(将适当的标志传递给特定的底层提取工具)。
哦,它在一些发行版的存储库中(在我的例子中是 Fedora,不过我记得,当我使用 Ubuntu 时,它并不在他们的存储库中。我是从 tarball 安装的。)。
存储库更新:atool 位于以下发行版的存储库中(仅检查当前版本):
- 软呢帽
- Debian(感谢@terdon,并且大概是像 Ubuntu 这样的衍生品)
- Ubuntu(qed,大概还有像 Mint 这样的衍生品)
- 打开苏塞
- CentOS(大概还有 RHEL)
- 架构Linux
我确信还有其他的......似乎是最现代的发行版。
更新问题的答案“我如何配置像 atool 这样的东西不使用 unzip 来提取 zip 文件......并使用gunzip 代替”:
编辑 atool 配置文件~/.atoolrc
并添加以下行:
path_unzip /usr/bin/gunzip
以及gunzip程序的正确路径。
有关可以放入此配置文件中的可能变量的完整列表,请参阅手册页,其中有很多。如果gunzip 所需的命令行选项与unzip 不同,您可能必须修改atool 源代码(perl) 本身。
答案2
这是一个处理多种存档类型的 shell 小函数。
extract () {
if [ ! -f "$1" ] ; then
echo "'$1' does not exist."
return 1
fi
case "$1" in
*.tar.bz2) tar xvjf "$1" ;;
*.tar.xz) tar xvJf "$1" ;;
*.tar.gz) tar xvzf "$1" ;;
*.bz2) bunzip2 "$1" ;;
*.rar) rar x "$1" ;;
*.gz) gunzip "$1" ;;
*.tar) tar xvf "$1" ;;
*.tbz2) tar xvjf "$1" ;;
*.tgz) tar xvzf "$1" ;;
*.zip) unzip "$1" ;;
*.Z) uncompress "$1" ;;
*.xz) xz -d "$1" ;;
*.7z) 7z x "$1" ;;
*.a) ar x "$1" ;;
*) echo "Unable to extract '$1'." ;;
esac
}
我找到了原版在网上某处引用了这个函数,并对它进行了一些修改以提取ar
档案和 xz 压缩tar
档案。
答案3
这AVFS文件系统提供了文件系统的视图,其中每个存档文件(例如/path/to/foo.zip
)都可以作为目录进行访问(~/.avfs/path/to/foo/zip#
对于本示例)。 AVFS 提供对最常见存档文件格式的只读访问。
mountavfs
cp -Rp ~/.avfs$PWD/large_file.zip\# extraction_directory
Avfs 使用外部助手,可以通过编辑文件轻松配置/usr
(不幸的是,从 avfs 1.0 开始,无法使用/usr/local
主目录中的文件,您需要编辑文件/usr
或重新编译)。/usr/share/avfs/extfs/ext-uzip
是处理文件的脚本.zip
,如果不想使用请更改它/usr/bin/unzip
。您也许可以改用 7z:尝试编辑/usr/share/avfs/extfs/extfs.ini
并将该行更改ext-uzip
为u7z .zip
.