[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Mit tar mehrere Archive auf einmal entpacken



Am Dienstag 14 September 2010 schrieb Sascha Girrulat:
> Hallo,
> 
> Am 14.09.2010 00:08, schrieb Martin Steigerwald:
> > Am Montag 13 September 2010 schrieb Jochen Schulz:
> >> Stefan Bauer:
> >>> for i in $(ls *.tar.gz); do tar xfvz $i; done
> >> 
> >> Ich schreibs immer wieder gern: das Globbing (*.tar.gz) wird
> >> generell von der Shell ausgeführt, deswegen ist die Command
> >> Substitution hier überflüssig. Folgendes tut genau so gut:
> >> 
> >> for i in *.tar.gz; do tar xfvz $i; done
> >> 
> >> (Genau genommen funktioniert es sogar besser, weil man dann keine
> >> Probleme mit ARG_MAX bekommt.)
> > 
> > find -name "*.tar.gz" -print0 | xargs -0 -n1 tar -xf
> > 
> > (-0 ist eine Null)
> > 
> > dürfte auch funktionieren, benötigt jedoch zwei zusätzliche externe
> > Befehle. Zudem muss man hier an die Null-Byte-Variante denken, damit
> > es auch mit Leerzeichen hinhaut. Daher finde ich die
> > Shell-Schleifen-Variante eleganter.
> 
> der vollst halber dann müsste auch sowas gehen wie:
> 
> find *.tar.gz -exec tar -xzvf \{\} \;

Nur wenn "find" immer nur ein Argument einfügt, was ich xargs mit -n1 sage. 
Oh, und das tut es offenbar:

martin@shambhala:~/Zeit> mkdir test
martin@shambhala:~/Zeit> cd test
martin@shambhala:~/Zeit/test> touch 1 2 3 4 5 6 7 8 9 10
martin@shambhala:~/Zeit/test> find -exec echo tar -xf \{\} \;
tar -xf .
tar -xf ./6
tar -xf ./9
tar -xf ./2
tar -xf ./5
tar -xf ./4
tar -xf ./1
tar -xf ./7
tar -xf ./8
tar -xf ./3
tar -xf ./10

Nun denn, dann geht das natürlich auch.

-- 
Martin 'Helios' Steigerwald - http://www.Lichtvoll.de
GPG: 03B0 0D6C 0040 0710 4AFA  B82F 991B EAAC A599 84C7

Attachment: signature.asc
Description: This is a digitally signed message part.


Reply to: