Как составить список содержимого всех файлов .zip в папке и grep для конкретного файла?

У меня 348 zip-файлов, и я хочу найти файл в одном из zip-файлов, unzip -l не работает с подстановочными знаками?

Как я могу перечислить содержимое всех .zip файлов и grep через объединенный список всех файлов, содержащихся в почтовых индексах?

28
задан 23 January 2013 в 14:24

3 ответа

Использование zipinfo является хорошим решением здесь. Однако, в общем случае, когда вы хотите применить команду к списку файлов, а команда не принимает список файлов, вы можете использовать цикл for:

for file in *.zip; do
    unzip -l "$file"
done \
| grep "\.zip\|setup"

Если файл ищите, имеет пробелы в нем, например: your file, в регулярном выражении grep вы должны экранировать каждый пробел с обратной косой чертой, как grep "\.zip\|your\ file".

0
ответ дан 23 January 2013 в 14:24

Чтобы вывести список файлов в zip-архиве, вы можете использовать следующую команду.

unzip -l

Чтобы выполнить сжатие сжатого архива, вы должны использовать утилиты сжатого архива, созданные для работы с этим типом формата архива.

Для zip-архивов:

zipgrep --help  
usage: zipgrep [egrep_options] pattern zipfile [members...]
Uses unzip and egrep to search the zip members for a string or pattern.

Для tar-архивов:

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'.

Существует несколько других инструментов, которые также работают с архивами. Вы можете передать результат в grep, чтобы сделать то же самое.

zcat
zcat my.archive.zip | grep "some text"

Или вы можете использовать функции поиска этих инструментов

zless
zmore
0
ответ дан 23 January 2013 в 14:24

Вы можете использовать zipinfo. Он включен в стандартную установку Ubuntu. Обратитесь к странице руководства за дополнительной информацией.

Например, чтобы найти шаблон setup в группе файлов zip в текущем каталоге, используйте эту команду:

find ./ -iname *zip 2> /dev/null -print0 | xargs -0 zipinfo | grep setup
0
ответ дан 23 January 2013 в 14:24

Другие вопросы по тегам:

Похожие вопросы: