17

I've a tar (gz, bzip) file and want to see its content, but not recursively.

This is: The "first level" in the file.

I already know how to see content:

tar -ztf file.tar.gz

But it's recursive!!

Thanks!

3 Answers 3

11

How about something like:

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

1
  • 3
    Slow for large tarballs, but workable Aug 20, 2014 at 21:27
20

tar --exclude='*/*' -tf yourarchive.tar should do it.

That's almost certainly a GNU tar-ism. But who doesn't use GNU tar, right? (Another fun fact: in recent versions of GNU tar, you don't need the 'z' or 'j' to list or uncompress .gz or .bz files -- it autodetects those and it just works.)

4
  • Easier to understand and remember and plenty fast.
    – Walf
    Mar 1, 2017 at 2:56
  • 2
    This is great, but I'll never remember that -t means list. So -tf can be converted to --list -f. Oct 18, 2017 at 16:24
  • This option is much faster than the accepted answer, thank you!
    – Dr_Zaszuś
    Jan 17, 2018 at 8:15
  • To see the first level of hierarchy I used tar --exclude='*/*/*' -tf yourarchive.tar Jul 25, 2019 at 14:33
1

This should show top-level directories as well as just files that include the dot character:

$ 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/

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .