Как мне искать содержимое 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


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

4

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

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


2

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



2

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


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

1

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

find . -iname *7z -exec 7zr -l \{\} \; | grep "filename.cpp"

1
Это все еще распаковывает их. Хотя невозможно сделать то, что хочет ОП, не распаковывая их, так что ...
EBGreen

Я согласен с EBGreen. Вы должны распаковать их, если вы не согласны с неполными результатами.
Surfasb

1
Разве эта команда не просто ищет имена файлов ? Мартин хочет искать внутри самих файлов , а не только по их именам.
Synetech
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.