Wie liste ich Inhalte aus einer TAR-Datei ohne Rekursion auf?

16

Ich habe eine tar (gz, bzip) -Datei und möchte deren Inhalt sehen, aber nicht rekursiv.

Dies ist: Die "erste Ebene" in der Datei.

Ich weiß bereits, wie man Inhalte sieht:

tar -ztf file.tar.gz

Aber es ist rekursiv !!

Vielen Dank!

santiago.basulto
quelle

Antworten:

11

Wie wäre es mit so etwas wie:

tar -ztf file.tar.gz | egrep '^ [^ /] + /? $'

dmah
quelle
3
Langsam für große Tarballs, aber funktionsfähig
Nicu Stiurca
18

tar --exclude='*/*' -tf yourarchive.tar Sollte es tun.

Das ist mit ziemlicher Sicherheit ein GNU-Ziel. Aber wer benutzt GNU Teer nicht, oder? (Eine weitere lustige Tatsache: In neueren Versionen von GNU tar brauchen Sie kein 'z' oder 'j', um .gz- oder .bz-Dateien aufzulisten oder zu dekomprimieren - es erkennt diese automatisch und es funktioniert einfach.)

mattdm
quelle
Einfacher zu verstehen und zu merken und schnell genug.
Walf
2
Das ist großartig, aber ich werde mich nie daran erinnern, dass das -teine Liste bedeutet . So -tfkann konvertiert werden --list -f.
Spinup
Diese Option ist viel schneller als die akzeptierte Antwort, danke!
Dr_Zaszuś
Um die erste Hierarchieebene zu sehen, die ich verwendet habetar --exclude='*/*/*' -tf yourarchive.tar
user3804598
1

Hier sollten sowohl Verzeichnisse der obersten Ebene als auch Dateien mit dem Punkt angezeigt werden:

$ tar -tf app.tar.gz | grep -E '^\w+(\.\w+)*/*\w+(\.\w+)*/?$'

django/
django/django.wsgi
django/search_indexes/
django/templates/
django/app/
django/other-app/
Sam Halicke
quelle