命令行归档管理器/ extracter

我一直忘记每种压缩格式的所有相应的提取命令。

所以我在考虑编写一个仅将文件扩展名映射到相应提取命令的脚本。 但我想这样的事情已经存在,我找不到它。

我会对文件滚轮这样的东西感到高兴,但文件滚轮是一个GUI工具。

一些建议:

UNP

unp(可从软件中心获得)是一个小型perl模块,可将各种存档解压缩到当前文件夹中。 对其支持的存档格式使用unp -s

默认情况下,它会将存档解压缩到当前文件夹中。

文件辊

file-roller本身可以从命令行运行。 使用file-roller -h 解压缩存档。

从这里开始 ,放入你的.bashrc:

 extract () { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xjf $1 ;; *.tar.gz) tar xzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) rar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xf $1 ;; *.tbz2) tar xjf $1 ;; *.tgz) tar xzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1 ;; *) echo "'$1' cannot be extracted via extract()" ;; esac else echo "'$1' is not a valid file" fi } 

还没有提到的是命令行公用事业的atoolatool ; 它在存储库中可用:单击atool 安装atool 或者运行sudo apt-get install atool

atool实际上是一个包含各种function的脚本 ,例如aunpack,apack,als,acat,adiff和arepack。 该程序最常见的用途可能是使用aunpack命令提取存档。 有很多有趣且有用的选项,但提取大多数档案的基本方法就是运行,例如,

 aunpack myarchive.tar 

通过在终端输入man atool或在线查看Ubuntu联机帮助页,可以记录对tar,7z,zip,jar,rar,ar,lha以及更多存档格式及其变体的支持。

所以,有用的是,如果你在同一个文件夹中有一个tar,zip和gz存档,那么你需要做的就是提取它们

 aunpack -e * 

并且将保留所有受支持的存档,并保留其文件夹结构。 如果生成的文件夹的名称已存在,则不会被覆盖,但会给出一个唯一的名称,如unpack-5645。

或者,如果您只想选择一种类型的存档并将其全部解压缩,请使用

 aunpack -e *.zip 

如果您需要直接在特定目录中解压缩的文件,只保留子文件夹目录结构(如果它退出),请输入,例如,

 aunpack -e Scripts11.zip -X /home/mike/Videos 

如果已存在具有相同名称的文件,除非您在命令中指定了force选项( -f ),否则系统将提示您重命名或覆盖操作。

正如联机帮助页所述,aunpack首先提取

将文件写入唯一(临时)目录,然后尽可能将其内容移回[es]。 这也可以防止本地文件被错误覆盖。


使用其他工具,其他操作也是可能的,如手册页所述 :

  • apack从文件或文件夹指定或stdin创建存档
  • als列出指定存档中的文件
  • acat使人们可以将存档文件提取到stdout
  • adiff使您可以比较指定的两个档案
  • arepack通过将原始存档的内容放在临时文件夹中然后重新打包新存档,可以将一种存档格式转换为另一种存档格式。

所有实用程序都有许多有用的选项,但最常用的选项可能是aunpack,因为它可以很容易地提取多个不同的存档。 很高兴能够发出一个命令并能够提取多种不同的存档格式,而无需使用tar,zip等各种命令。

有关如何将atool函数集成到文件管理器的自定义操作(如Thunar)的最新文章,请参阅此在线杂志 。

有一个名为dtrx的工具 – 做正确的提取。

从Ubuntu存储库安装它并运行dtrx somefile.someext 。 该工具将以交互方式查询用户有关嵌套存档(zip文件的zip)的信息。

dtrx是frabjous提取物的复杂版本。

您需要处理哪种格式? 一种方法是编写一个shell脚本,它检查其参数的扩展名。 或者,如果您处理的是.tar。*的变体,只需执行tar -xf就会自动处理大部分内容。 (因此我只记得那个并且unzip我通常遇到的所有内容。)