如何从命令行快速提取各种存档文件?


11

很多时候,我需要使用commad-line提取不同种类的存档文件。但是我并非一直都记得任何类型的文件存档的确切命令。因此,我必须浪费时间并再次搜索。如何避免这种情况?


1
另请参阅atool,您可以使用它们提取/打包多种格式:请参阅我为这个问题提供的答案:command-line-archive-manager-extracter。这个问题也是该问题的重复,因此可能应该合并它们。

Answers:


15

dtrx命令是你对这个问题的朋友。

它通过猜测其类型来解压缩任何存档文件。它还将确保您解压缩的文件将被放置在新目录中;避免将大量文件混入当前的工作目录中。

安装

sudo aptitude install dtrx

用法

dtrx stuff.zip

11

您可以使用以下shell脚本(我将其命名为,extract然后放入~/bin):

#!/ bin / bash

如果[$#-lt 1];然后
  回声“用法:`basename $ 0`文件”
  1号出口
科幻

#我在https://unix.stackexchange.com/a/168/37944找到了以下功能我对其进行了一些改进。非常感谢sydo提出这个想法。
提取(){
    为$ @中的arg; 做
        如果[-f $ arg]; 然后
            案例$ arg
                * .tar.bz2)tar xjf $ arg ;;
                * .tar.gz)tar xzf $ arg ;;
                * .bz2)bunzip2 $ arg ;;
                * .gz)gunzip $ arg ;;
                * .tar)tar xf $ arg ;;
                * .tbz2)tar xjf $ arg ;;
                * .tgz)tar xzf $ arg ;;
                * .zip)解压缩$ arg ;;
                * .Z)解压缩$ arg ;;
                * .rar)rar x $ arg ;; #必须安装“ rar”
                * .jar)jar -xvf $ arg ;; #必须安装'jdk'
                *)echo“'$ arg'不能通过extract()提取” ;;
            埃萨克
        其他
            回显“'$ arg'不是有效文件”
        科幻
    做完了
}

提取$ @

不要忘记使脚本可执行:

chmod +x ~/bin/extract

用法:

解压缩file_1 file_2 ... file_n 

好一个。我发现zip有时会提取到当前目录中,当我想要它自己的子目录时。使用unzip -d basename $arg可能会有所帮助。
工匠
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.