How can I view the list of files in a ZIP archive without decompressing it?
-
Is it possible to do the same for a regular unix archive? (tar/gzip/bz2/ etc) – ThorSummoner Oct 17 '14 at 16:59
-
tar tvf. if .gz, add a z. For bz2, add j. Lots more, check the man page. – UtahJarhead Oct 19 '15 at 20:22
12 Answers
The less
utility is capable of peeking into a zip
archive. In fact, if you look at the outputs of unzip -l zipfile
and less zipfile
, you will find them to be identical.
![](../../users/profiles/26867.webp)
- 11,068
- 1
- 21
- 26
-
177Note, that ```less zipfile``` on MacOS-X displays the binary filecontent, so you see a lot of garbage instead of the content of the zip-file. Then you should opt for the ``ùnzip -l zipfile``` – heiglandreas Jan 25 '13 at 09:59
-
I get slightly more information from unzip compared to less. Just saying. – matt burns May 07 '13 at 10:57
-
23@ayaz In what system does less list zipfiles? I see comments telling that it does not work on MAC, Ubuntu, and here I use Debian. Debian also shows binary garbage. – DrBeco Aug 12 '14 at 04:38
-
24
-
6WRONG. unzip -l works well to show the files inside of a zip archive, but less gives out binary content in many cases and that's a mess of course. – Arturas M Nov 05 '14 at 13:48
-
32You need the ``lesspipe`` helper installed to enable zip file support for less. It's standard on many linux systems but not on OSX, but you can install it with brew. – pimlottc Jun 18 '15 at 19:37
-
23It's a neat hack to use `less`, but `unzip -l` seems like the canonical answer, esp. given that it's a far more universal answer. – Mark E. Haase Jun 29 '15 at 21:30
-
2`zipinfo myFile.zip` produces more info and particularly it lists UNIX file permissions whereas `unzip -l` is less verbose. My comment is based on zipinfo 3.0 and unzip 6.0 dated from April 2009. – Svilen Jan 27 '16 at 12:51
-
1
-
-
1
-
Less is better where it works, cause you don't need to pipe it to the pager. – nethero May 28 '21 at 13:31
-
Try unzip -l files.zip
Or unzip -l files.zip | less
if there are too many files to be listed in one page.
Also, See man unzip
for more options
![](../../users/profiles/57370.webp)
- 2,242
- 1
- 13
- 12
-
12You can skip the pipe to `less` command. It is great idea in a big collection of files, though. – omar Jul 09 '14 at 14:39
-
You can also add `-v` argument to include verbose details about compression for each file. – kevinarpe Mar 06 '22 at 14:26
To list zip contents:
zipinfo -1 myzipfile.zip
For detailed output:
zipinfo myzipfile.zip
![](../../users/profiles/290949.webp)
- 1,391
- 1
- 8
- 5
-
11Nice answer, you don't have to parse the output just to get filenames. – Antoine Pelisse Oct 31 '14 at 23:04
-
1
-
1@MathiasLykkegaardLorenzen according to `man zipinfo`: `-1 list filenames only, one per line. This option excludes all others; headers, trailers and zipfile comments are never printed. It is intended for use in Unix shell scripts.` – He Yifei 何一非 Jul 15 '20 at 23:16
-
The `-1` flag matches the `ls` command. `ls -1` prints all files, one line per file. – Nick Garvey Aug 19 '20 at 21:16
Please use
vim ZIP_FILE_NAME
for the same. This is a simple and easy to remember one.
![](../../users/profiles/3680.webp)
- 7,346
- 22
- 44
- 53
![](../../users/profiles/282357.webp)
- 705
- 5
- 2
-
9Nice, this also allows to open individual files in the archive without doing the unzip – user3885927 Sep 22 '16 at 17:25
-
-
Actually: this wont work if `unzip` is not installed on the system. Besides that, awesome! – sjas Mar 24 '19 at 22:04
You can make the zip appear as a directory (in which you use cd
, ls
, etc.) by mounting it with the fuse-zip virtual filesystem.
mkdir foo.d
fuse-zip foo.zip foo.d
ls foo.d
cat foo.d/README
...
fusermount -u foo.d
rmdir foo.d
Another relevant FUSE filesystem is AVFS. It creates a view of your entire directory hierarchy where all archives have an associated directory (same name with #
tacked on at the end) that appears to hold the archive content.
mountavfs
ls ~/.avfs/$PWD/foo.zip\#
cat ~/.avfs/$PWD/foo.zip\#/README
...
umountavfs
Many modern file managers (e.g. Nautilus, Dolphin) show archive contents transparently.
AVFS is read-only. Fuse-zip is read-write, but beware that changes are only written to the zip file at unmount time, so don't start reading the archive expecting it to be modified until fusermount -u
returns.
![](../../users/profiles/42315.webp)
- 69,786
- 21
- 137
- 178
-
Nice, Giles. Thanks. Just a quick: can one add files to it by justing "cp"ing to the directory? – DrBeco Aug 12 '14 at 04:45
-
At least in Ubuntu, the possibly easiest command is:
view [zipfile]
This will open up the file listing in your standard text editor (nano, vim etc).
![](../../users/profiles/83959.webp)
- 615
- 1
- 6
- 10
A more comprehensive solution: vim || emacs
The previous answer by @kinORnirvana is my favorite to produce a file with the content of a zip archive.
zipinfo [-1] archive.zip > archive_content.txt
However, I recommend vim or emacs (not nano) if you need to browse into an archive file or even to view the content of a file contained inside it.
vim archive.zip
This approach works with other archive formats too:
vim file.tar
vim file.tar.gz
vim file.tar.bz2
With vim or emacs you can:
- browse the directory structure of the archive file.
- view the content of any file inside the archive file.
![](../../users/profiles/643212.webp)
- 281
- 1
- 3
- 9
If you're more graphically oriented, Midnight Commander can also browse zip files as if they were regular directories.
![](../../users/profiles/573985.webp)
- 2,100
- 1
- 8
- 14
(yaa) Yet another answer:
Alias this command:
alias vless='/usr/share/vim/vim73/macros/less.sh'
and you can use vless file.zip
to take advantage of vi
(or vim
) less script.
(also good to substitute less, so you can have colors)
![](../../users/profiles/93204.webp)
- 1,915
- 2
- 17
- 16
it is possible to peek inside also with zmore
, zless
, zcat
, but with vim
is in a structured way
![](../../users/profiles/1695061.webp)
- 101
- 1
Try this -
zipdetails yourFileName.zip
![](../../users/profiles/183952.webp)
- 305
- 3
- 11
- 23
-
2Could you possibly include some example outputs? Is zipdetails part of the standard Linux kernel or would the OP need to install this separately? – Burgi Feb 10 '20 at 15:46
-
1Wouldn't it be better to use `zipdetails yourFileName.zip | grep "Filename "`? – zx485 Feb 10 '20 at 23:24
-
1`Zipdetails displays information about the internal record structure of zip files. It is not concerned with displaying any details of the compressed data stored in the zip file.` zipinfo seems much more appropriate here – xeruf Oct 15 '21 at 10:27
-
@zx485 Using Redhat 7, I'm unable to use any commands in other answers, and we're unable to request to install anything on that server. Your solution was useful, thanks! – Metafaniel Aug 03 '22 at 00:09