Как мне искать содержимое 7-Zip архивов (.7z)?

10

Я ищу способ поиска содержимого файлов внутри архива 7-Zip (.7z) без необходимости распаковывать архив. У меня есть много 7-Zip архивов с кодом внутри них, и я хотел бы найти их.

Есть ли способ сделать это?

Мартин
источник
Какая операционная система?
Дарт Андроид
то же самое. Хотя из того, что я могу сказать, нет никакого рабочего способа монтировать архив 7z в файловую систему в Linux, который позволил бы ему использовать обычные * nix file tools для поиска.
Подмастерье Компьютерщик
@Martin: поиск по каким критериям? имя? байтов внутри файлов, хранящихся в .7z?
Акира
ОС: Windows; Пример критерия: "моя строка"
Мартин,
Есть несколько утилит, которые делают это очень хорошо. Смотрите новейшие ответы.
gravidThoughts

Ответы:

10

В Windows используйте командную строку:

cd C:\Program Files\7-Zip
7z

Для поиска определенного файла, например namefile:

7z l compressed.tar namefile -r

Видеоурок: поиск файлов с 7-Zip

flaviofire
источник
9
Да, это работает, и это довольно быстро, особенно если матчей не так много. Но папка, в которой живет 7z.exe, должна быть, например, в PATH C:\Program Files\7-Zip. Тем не менее, он не ищет содержимое файлов, только имена файлов и, следовательно, не отвечает на вопрос.
Питер Мортенсен
4

WinRAR может это сделать. Однако давайте посмотрим правде в глаза, что это требует распаковки, хотя WinRAR делает это без проблем.

WinRAR, поиск в архиве


источник
2

Как уже говорили другие, нет никакого пути. Чтобы проверить содержимое файла, его необходимо распаковать (независимо от того, являются ли файлы сжатыми или нет, или они зашифрованы или нет). Единственный способ избежать распаковки файлов - это если они добавляются с помощью метода store (т.е. не сжимаются вообще, а просто объединяются).

Synetech
источник
2

dnGrep - отличная реализация grep для Windows, которая имеет плагин архивных файлов, который работает со всеми форматами архивов. Вы можете использовать Regex, Xpath, Text или фонетические для вашего поиска.

gravidThoughts
источник
Просто установил это. Когда я пытаюсь запустить его, я вижу dnGREP.exe в списке процессов, но графический интерфейс не отображается. Пытался убить его и перезапустить безрезультатно. Придется попробовать что-то еще.
pacoverflow
1

Если вы используете Linux с установленным 7-Zip:

find . -iname *7z -exec 7zr -l \{\} \; | grep "filename.cpp"
Дарт Андроид
источник
1
Это все еще распаковывает их. Хотя невозможно сделать то, что хочет ОП, не распаковывая их, так что ...
EBGreen
Я согласен с EBGreen. Вы должны распаковать их, если вы не согласны с неполными результатами.
Surfasb
1
Разве эта команда не просто ищет имена файлов ? Мартин хочет искать внутри самих файлов , а не только по их именам.
Synetech