命令行档案管理器/提取器

命令行档案管理器/提取器

我总是忘记每种压缩格式对应的提取命令。

因此,我考虑编写一个脚本,仅将文件扩展名映射到适当的提取命令。但我猜类似的东西已经存在,我只是找不到它。

我对 file-roller 之类的东西很满意,但是 file-roller 是一个 GUI 工具。

答案1

一些建议:

统一国民党

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

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

文件滚轮

file-roller 本身可以从命令行运行。用于file-roller -h <archive name>解压缩档案。

答案2

这里,将其放入你的 .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
} 

答案3

尚未提及的是瑞士军刀命令行实用程序:atool;它在存储库中可用:单击一个工具 安装工具或运行sudo apt-get install atool

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

aunpack myarchive.tar

通过输入以下内容可以记录对 tar、7z、zip、jar、rar、ar、lha 和许多其他存档格式及其变体的支持man atool通过在终端中Ubuntu 在线手册页

因此,有用的是,如果你在同一个文件夹中有 tar、zip 和 gz 存档,那么你需要做的就是运行

aunpack -e *

所有支持的档案都将解压,并保留其文件夹结构。如果生成的文件夹名称已经存在,则不会覆盖它,而是赋予一个唯一的名称,例如 unpack-5645。

或者,如果你只想选择一种类型的档案并将它们全部解压,请使用

aunpack -e *.zip

如果您需要直接在特定目录中解压文件,并且只保留子文件夹目录结构(如果存在),请输入,例如,

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

如果已经存在同名文件,系统将提示您执行重命名或覆盖操作,除非您-f在命令中指定了强制选项()。

正如手册页所述,aunpack 首先提取

文件保存到一个唯一的(临时)目录中,然后尽可能将其内容移回。这也可以防止本地文件被错误覆盖。


使用其他工具,可以采取其他行动,正如手册页

  • 一个背包根据文件或文件夹指定或标准输入创建档案
  • 艾尔斯 列出指定档案内的文件
  • 一只猫可以将存档文件提取到 stdout
  • 差异使您可以比较指定的两个档案
  • 包装通过将原始档案的内容放在临时文件夹中,然后重新打包新的文件夹,可以将一种档案格式转换为另一种档案格式。

所有实用程序都有许多有用的选项,但最常用的选项可能是 aunpack,因为它可以轻松提取多个不同的档案。只需发出一个命令即可提取多种不同的档案格式,而无需使用 tar、zip 等各种命令,这真是太棒了。

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

答案4

您需要处理哪种格式?一种方法是编写一个 shell 脚本,检查其参数的扩展名。或者,如果您处理的只是 .tar.* 的变体,那么只需执行此操作tar -xf即可自动处理其中的大部分内容。(因此,我只记得这一点,unzip这足以应付我通常遇到的所有问题。)

相关内容