У меня 348 zip-файлов, и я хочу найти файл в одном из zip-файлов, unzip -l
не работает с подстановочными знаками?
Как я могу перечислить содержимое всех .zip
файлов и grep
через объединенный список всех файлов, содержащихся в почтовых индексах?
Использование zipinfo
является хорошим решением здесь. Однако, в общем случае, когда вы хотите применить команду к списку файлов, а команда не принимает список файлов, вы можете использовать цикл for
:
for file in *.zip; do
unzip -l "$file"
done \
| grep "\.zip\|setup"
Если файл ищите, имеет пробелы в нем, например: your file
, в регулярном выражении grep вы должны экранировать каждый пробел с обратной косой чертой, как grep "\.zip\|your\ file"
.
Чтобы вывести список файлов в 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
Вы можете использовать zipinfo
. Он включен в стандартную установку Ubuntu. Обратитесь к странице руководства за дополнительной информацией.
Например, чтобы найти шаблон setup
в группе файлов zip в текущем каталоге, используйте эту команду:
find ./ -iname *zip 2> /dev/null -print0 | xargs -0 zipinfo | grep setup