Mehrere Tar Archive auf einmal entpacken

2011-08-17 - kostaki 4 Kommentare »

Heute suchte ich eine Datei die in einem vom ca. 3000 tar.gz Archiven enthalten sein musste, aber ich wusste natürlich nicht in welchem. Da sie nicht besonders groß waren, wollte ich sie einfach alle entpacken und mir die Datei die ich suchte raus picken. Dabei stellte ich das erste mal fest das folgendes nicht funktioniert.

$ tar -xvzf *.tar.gz
tar: blablubarchive.tar.gz: Not found in archive

Man bekommt nur einen Fehler ausgegeben. Tar kann anscheinend nicht mit einem Wildcard aufrufen umgehen, aber eine Lösung war auch so schnell gefunden.

$ for i in *.tar.gz; do tar -xvzf ${i}; done

Vielleicht hilft es ja mal jemandem.

  1. 4 Kommentare

  2. Usul
    schrieb am 17.08.2011 um 08:25 Uhr

    Hm, das ist in erster Linie aber kein tar-Problem. Das Auflösen der Wildcard übernimmt nicht tar, sondern bereits die Bash. Diese macht aus dem Wildcard-Zeichen alle möglichen Dateinamen und überreicht diese im Pulk an tar. Tar wiederum interpretiert nur einen dieser Parameter als Archivnamen, die anderen aber als Dateinamen, die es aus dem erstgenannten Archiv entpacken soll, was zu der Fehlermeldung führt.

    Die Wildcard kommt also gar nicht bis zum tar-Befehl, der ist unschuldig :) Die Bash löst den vorher auf.

  3. kostaki
    schrieb am 19.08.2011 um 07:48 Uhr

    Ja aber warum klappt das bei allen anderen Befehlen und hier nicht? Wie auch immer so ging es ja auch. :)

  4. kero
    schrieb am 27.02.2012 um 18:53 Uhr

    tar xvf bla.tgz –no-anchored some.txt
    wäre glaube ich besser geeignet als alle Archive entpacken zu muessen.

  5. Olafson
    schrieb am 03.03.2012 um 05:18 Uhr

    Das sollte auch funzen:
    ————————–
    zgrep [SUCHMUSTER] [ORT]

    Beispiel:
    ————————–
    zgrep -i failed /var/log/*.gz

    Gruss

Kommentar schreiben

*

*