Hi all,
ich brauche ein Shell-script, das tarballs selbständig in ein bestimmtes Verzeichnis entpackt. Und zwar nicht in das meistens entpackte Unterverzeichnis, sondern direkt in das angegebene Verzeichnis.
Ich habe das script schon soweit, dass es für einige Tarballs geht.
Ich poste es einfach mal, ist ja nicht viel: (Usage: ' extract <tarball> <direction> ')
Das script schaut also zunächst ob es sich um einen gzip oder bzip2 tarball handelt und bearbeitet es entsprechend. Eigentlich hatte ich vor es mit Arrays und ner schleife zu machen, ist aber bei demhier geblieben ;-)Code:#!/bin/bash gzip='*.tar.gz' bzip2='*.tar.bz2' if [ ! $2 ] then mkdir -p $HOME'/sources/' extractdir=$HOME'/sources/' else extractdir=$2 fi if [ -e $1 ] then if [ ! ${1%%$gzip} ] then tardir=`tar -ztf $1 | grep ^[^/]*\/$` tar -xzf $1 --directory=$extractdir mv $extractdir/$tardir* $extractdir rmdir $extractdir/$tardir elif [ ! ${1%%$bzip2} ] then tardir=`tar -jtf $1 | grep ^[^/]*\/$` tar -xjf $1 --directory=$extractdir mv $extractdir/$tardir* $extractdir rmdir $extractdir/$tardir else echo "Unknown format" fi else echo $1": File not found" fi
Mein Problem ist die Zeile
Die soll rausbekommen, wie das unterverzeichnis des Tarballs heißt. Sie funktioniert aber nur, wenn die Dateien im Tarball "verzeichnis/dateien" heißen und nicht, wenn sie "./verzeichnis/dateien" heißen. Genausowenig funktioniert das, wenn es im Tarball gar kein Unterverzeichnis gibt.Code:tardir=`tar -ztf $1 | grep ^[^/]*\/$`
Ersteres müsste eigentlich mit ner Änderung der regex von grep zu beheben sein, ungefähr so: " ^[./]\?[^/]*\/$ ". Das geht nur nicht.
Hat jemand ne idee wie ich das erreiche?
Thx
Lesezeichen