vedranvinko icon

extract

vedranvinko | PRO | 02/24/15 05:56:49 PM UTC | 0 ⭐ | 680 👁️ | Never ⏰ | []
Bash |

620 B

|

None

|

0 👍

/

0 👎

extract() {
    if [ -f $1 ] ; then
      case $1 in
        *.tar.bz2)   tar xjf $1     ;;
        *.tar.gz)    tar xzf $1     ;;
        *.bz2)       bunzip2 $1     ;;
        *.rar)       unrar e $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
}
 
#! /usr/bin/env bash
 
declare -A EXTENSION_DICT=( [tar.xz]="kxJf" [txz]="kxJf" [tar.bz2]="kxjf"
                [tar.bz]="kxjf" [tar.gz]="kxzf"
                            [tgz]="kxzf" [tbz]="kxjf"
                            [tbz2]="kxjf" [tb2]="kxjf" )
 
function extract_archive(){
  read file extension <<<$(echo $1 $2)
  echo "extracting $file to ${file%$extension}"
  eval "tar ${EXTENSION_DICT[$extension]} $file"
}
 
for file in $*
do
  case "$file" in 
    *tar.xz)
      extract_archive $file "tar.xz"
      ;;
 
    *tar.bz2)
      extract_archive $file "tar.bz2"
      ;;
 
    *tar.bz)
      extract_archive $file "tar.bz"
      ;;
 
    *tar.gz)
      extract_archive $file "tar.gz"
      ;;
 
    *tgz)
      extract_archive $file "tgz"
      ;;
 
    *tbz)
      extract_archive $file "tbz"
      ;;
 
    *tbz2)
      extract_archive $file "tbz2"
      ;;
 
    *tb2)
      extract_archive $file "tb2"
      ;;
 
    *txz)
      extract_archive $file "txz"
      ;;
 
    *)
      echo "Sorry, unrecognized file format."
      exit 1
      ;;
  esac
done

Comments