Как вывести список из файла tar без рекурсии?

17

У меня есть файл tar (gz, bzip), и я хочу видеть его содержимое, но не рекурсивно.

Это: «Первый уровень» в файле.

Я уже знаю, как увидеть контент:

tar -ztf file.tar.gz

Но это рекурсивно!

Благодарность!

santiago.basulto
источник

Ответы:

11

Как насчет чего-то вроде:

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

DMAH
источник
3
Медленно для больших тарболлов, но выполнимо
Нику Стирка
19

tar --exclude='*/*' -tf yourarchive.tar должен сделать это.

Это почти наверняка GNU таризм. Но кто не использует GNU tar, верно? (Еще один забавный факт: в последних версиях GNU tar вам не нужны 'z' или 'j' для просмотра или распаковки файлов .gz или .bz - он автоматически определяет их и просто работает.)

mattdm
источник
Легче понять и запомнить и много быстро.
WALF
2
Это здорово, но я никогда не запомню этот список-t средств . Так что можно преобразовать в . -tf--list -f
раскрутка
Этот вариант намного быстрее принятого ответа, спасибо!
Dr_Zaszuś
Чтобы увидеть первый уровень иерархии я использовалtar --exclude='*/*/*' -tf yourarchive.tar
user3804598
1

Это должно показать каталоги верхнего уровня, а также только файлы, которые содержат символ точки:

$ 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/
Сэм Халике
источник