I have 348 zip files and I want to find a file that is in one of the zip files,
unzip -l doesn't work with wild cards?
How can I list content of all
.zip files and
grep through the merged list of all files contained in the zips?
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It only takes a minute to sign up.Sign up to join this community
zipinfo is a fine solution here. However, in general whenever you want to apply a command to a list of files and the command doesn’t accept a list of files, you can use a
for file in *.zip; do unzip -l "$file" done \ | grep "\.zip\|setup"
If the file you are searching for has spaces in it like:
your file, in the grep regular expression you need to escape every space with a backslash like
grep "\.zip\|your\ file".
You can use
zipinfo. It is included in the default Ubuntu installation. Check the manual page for more info.
For example, to look for a pattern
setup in a bunch of zip files in current directory, use this command:
find ./ -iname *zip 2> /dev/null -print0 | xargs -0 zipinfo | grep setup
To list the files in a zip archive you can use the following command.
To grep a compressed archive you should use the compressed archive utilities built to work with that type of archive format.
For zip archives:
zipgrep --help usage: zipgrep [egrep_options] pattern zipfile [members...] Uses unzip and egrep to search the zip members for a string or pattern.
For tar archives:
zgrep --help Usage: /bin/zgrep [OPTION]... [-e] PATTERN [FILE]... Look for instances of PATTERN in the input FILEs, using their uncompressed contents if they are compressed. OPTIONs are the same as for 'grep'.
There are a few other tools that work with archives as well. You can pipe the out put into grep to do the same thing.
zcat zcat my.archive.zip | grep "some text"
Or you can use the search functionality of these tools