find . -iname '*.zip' | while read file; do unzip -l "$file" | grep -q [internal file name] && echo $file; done
Эта команда используется для поиска файла внутри архивов формата ZIP. Она выполняет следующие действия:
1. find . -iname '*.zip'
: Находит все файлы с расширением .zip в текущей директории и её поддиректориях.
2. |
: Перенаправляет вывод найденных файлов на вход следующей команде.
3. while read file; do ... done
: Запускает цикл, в котором каждый найденный файл будет обрабатываться как переменная $file
.
4. unzip -l "$file"
: Отображает содержимое архива без его распаковки.
5. |
: Перенаправляет вывод содержимого архива на вход следующей команде.
6. grep -q [internal file name]
: Ищет в выводе имя внутреннего файла. Если файл найден, команда завершится успешно (0), иначе — неудачно (1).
7. &&
: Запускает следующую команду только в случае успешного завершения предыдущей.
8. echo $file
: Выводит имя архива, в котором был найден искомый файл.
Эта команда полезна, когда необходимо найти архив, содержащий конкретный файл, без распаковки всех архивов вручную.
Альтернативой может быть использование графического интерфейса для архивации и поиска файлов.