unzip -l file.zip/sub_file.zip
не работает, потому что file.zip
не является каталогом: это обычный файл, который бывает быть в формате архива. Но вы можете создать каталог, который отражает содержимое zip-файла, установив файловую систему, которая представляет представление содержимого zip-файла. Есть несколько вариантов, выберите тот, который проще всего установить в вашем дистрибутиве:
Например, с archivemount:
mkdir file.d
archivemount file.zip file.d
unzip -l file.d/sub_file.zip
fusermount -u file.d
или даже
mkdir file.d sub_file.d
archivemount file.zip file.d
archivemount file.d/sub_file.zip sub_file.d
ls -lR sub_file.d
fusermount -u sub_file.d
fusermount -u file.d
См. Извлеките только определенный файл из заархивированного архива в указанный каталог , Как мне рекурсивно использовать grep для сжатых архивов? и Искать файлы определенного размера внутри рекурсивных заархивированных архивов для примеров AVFS и fuse-zip в аналогичных ситуациях.
grep --binary-files=text pattern file
другое решение:
strings -a file | grep pattern