exctract.plugin: added support for multiple compressors

Added support for the LZMA, LZOP, XZ and lzip compressors and for the
cpio archiver. Now works with files and paths containing whitespaces.
pull/309/head
Tamás Pál 2014-07-12 23:33:17 +02:00
parent a1e87c4920
commit 05baab75dd
1 changed files with 29 additions and 14 deletions

View File

@ -6,20 +6,35 @@ extract () {
echo "Error: No file specified."
return 1
fi
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xvjf $1 ;;
*.tar.gz) tar xvzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) unrar x $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xvf $1 ;;
*.tbz2) tar xvjf $1 ;;
*.tgz) tar xvzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1 ;;
*.7z) 7z x $1 ;;
*) echo "'$1' cannot be extracted via extract" ;;
if [ -f "$1" ] ; then
case "$1" in
*.tar.bz2) tar xvjf "$1" ;;
*.tar.gz) tar xvzf "$1" ;;
*.tar.xz|*.txz)
xz -dc "$1" | tar xvf - ;;
*.tar.lzma) ( xz -dc "$1" || lzma -dc "$1" ) | tar xvf - ;;
*.tar.lzop) lzop -d -c "$1" | tar xvf - ;;
*.tar.lzip) lzip -d -c "$1" | tar xvf - ;;
*.cpio.gz|*.cpio.Z)
gzip -dc "$1" | cpio -itvm ;;
*.cpio.bz2) bzip2 -dc "$1" | cpio -itvm ;;
*.cpio.xz) xz -dc "$1" | cpio -itvm ;;
*.cpio) cpio -itvm < "$1" ;;
*.bz2) bunzip2 "$1" ;;
*.rar) unrar x "$1" ;;
*.gz) gunzip "$1" ;;
*.tar) tar xvf "$1" ;;
*.tbz2) tar xvjf "$1" ;;
*.tgz) tar xvzf "$1" ;;
*.zip) unzip "$1" ;;
*.jar) unzip "$1" ;;
*.Z) (uncompress "$1" || gzip -dc "$1") ;;
*.7z) 7z x "$1" ;;
*.lzma) (xz -dc "$1" || lzma -d "$1") ;;
*.lzop) lzop -d "$1" ;;
*.lzip) lzip -d "$1" ;;
*.xz) xz -d "$1" ;;
*) echo "'$1' cannot be extracted via extract" ;;
esac
else
echo "'$1' is not a valid file"