一个Bash函数来提取各种类型的文件档案

有很多应用程序可用于提取各种类型的存档文件。 对您而言,记住每个存档工具的所有选项和参数将很困难。 别担心! 今天,我遇到了一个简单的Bash函数,用于提取Linux中各种类型的文件档案。

该Bash函数能够提取最常用的存档格式,例如.tar.bz2,.tar.bz,.bz2,.rar,.zip和.7z等。您无需使用实际的存档应用程序提取存档文件! 只需将此功能添加到您的 ~/bashrc 文件并调用它以提取存档文件。 它将自动查找并使用适当的存档工具来提取文件。 无需记住标志和选项!

Bash函数提取各种类型的文件档案

打开你的 ~/.bashrc 文件:

$ nano ~/.bashrc

在末尾添加以下代码段:

# Bash Function To Extract File Archives Of Various Types
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  ;;
             *.7z)        7z x $1    ;;
             *)           echo "'$1' cannot be extracted via extract()" ;;
         esac
     else
         echo "'$1' is not a valid file"
     fi
}

Ctrl+o 然后按Enter保存文件,然后按 Ctrl+x退出文件。 运行以下命令以使更改生效:

$ source ~/.bashrc

从现在开始,您只需调用此函数即可提取各种类型的存档文件。

例如,我要提取一个 .7z 使用以下命令归档文件类型:

$ extract archive.7z 

样本输出:

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_IN,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz (206A7),ASM)

Scanning the drive for archives:
1 file, 16013693 bytes (16 MiB)

Extracting archive: archive.7z
--
Path = archive.7z
Type = 7z
Physical Size = 16013693
Headers Size = 1204
Method = LZMA:23
Solid = +
Blocks = 1

Everything is Ok                                                               

Folders: 21
Files: 37
Size:       16625007
Compressed: 16013693

同样,提取 .zip 输入文件,命令为:

$ extract archive.zip 

请注意,在使用此功能之前,您必须已经安装了适当的存档管理器。 如果您的系统上没有安装受支持的存档工具,您将收到以下错误消息:

$ extract archive.zip 
bash: /usr/bin/unzip: No such file or directory

该脚本的原始作者未知。 Internet上的多个地方都提到了此脚本。 如果有人知道谁写的,请在下面的评论部分中告诉我。 我将添加作者的详细信息。

您是否还在使用其他炫酷的Bash功能? 请通过评论部分分享它们。 这对我以及所有读者可能都是有用的。

相关阅读:

  • 在Linux中两次不键入全名就重命名文件
  • Bash技巧-如何在一个命令中进行cp或mv和cd
  • [Bash Tips] 如何在一个命令中进行cd和ls
  • 如何在Linux中归档文件和目录 [Part 1]

BASHBash函数提取文件档案提取文件Linux

Sidebar