#!/usr/bin/env bash set -eo pipefail if [ -z "$1" ]; then echo "Usage: extract ." echo " extract [path/file_name_2.ext] [path/file_name_3.ext]" exit 1 fi for n in "$@"; do if [ ! -f "$n" ] ; then echo "File does not exist, skipping: '$n'" continue fi case "${n%,}" in # *.tar) tar -xvf "$1" ;; # *.tbz2) tar -jxvf "$1" ;; # *.tar.bz2) tar -jxvf "$1" ;; # *.tgz) tar -zxvf "$1" ;; # *.tar.gz) tar -zxvf "$1" ;; # *.tar.xz) tar -Jxvf "$1" ;; *.tar.bz2|*.tar.gz|*.tar.xz|*.tbz2|*.tgz|*.txz|*.tar) tar xvf "$n" ;; *.7z|*.arj|*.cab|*.chm|*.deb|*.dmg|*.iso|*.lzh|*.msi|*.rpm|*.udf|*.wim|*.xar) 7z x ./"$n" ;; *.lzma) unlzma ./"$n" ;; *.bz2) bunzip2 ./"$n" ;; *.rar) unrar x -ad ./"$n" ;; *.gz) gunzip ./"$n" ;; *.zip) unzip ./"$n" ;; *.z) uncompress ./"$n" ;; *.xz) unxz ./"$n" ;; *.exe) cabextract ./"$n" ;; *.pax) cat "$1" | pax -r ;; *.pax.Z) uncompress "$1" --stdout | pax -r ;; *) echo "extract: '$n' - unknown archive method" ;; esac done