#!/bin/bash if [ $# -lt 1 ];then echo "Usage: `basename $0` FILES" exit 1 fi extract () { arg="$1" cd $(dirname "$arg") case "$arg" in *.tar.bz2) tar xjf "$arg" --one-top-level ;; *.tar.gz) tar xzf "$arg" --one-top-level ;; *.bz2) bunzip2 "$arg" ;; *.gz) gunzip "$arg" ;; *.tar) tar xf "$arg" --one-top-level ;; *.tbz2) tar xjf "$arg" --one-top-level ;; *.tgz) tar xzf "$arg" --one-top-level ;; *.zip) a_dir=`expr "$arg" : '\(.*\).zip'` unzip "$arg" -d "$a_dir" ;; *.Z) uncompress "$arg" ;; *.rar) a_dir=`expr "$arg" : '\(.*\).rar'` ; mkdir "$a_dir" ; rar x "$arg" "$a_dir" ;; # 'rar' must to be installed *) echo "'$arg' cannot be extracted via extract()" ;; esac cd - } extract "$1"