Поиск содержимого в gzip файлах

Теги

Архивы, сжатые с помощью gzip, имеют расширение файла .tar.gz или .tgz. 

Извлечь содержимое из этих файлов gzip достаточно просто, но что делать, если вам нужен только определенный файл? Нет особого смысла извлекать сотни или тысячи файлов из архива, если вам нужно найти всего один файл. К счастью, мы можем использовать командную строку Linux и графические менеджеры архивов для поиска содержимого сжатых gzip архивов. Как только мы определим нужный нам файл, можно извлечь его отдельно, а не извлекать каждый файл. В этой заметке мы покажем, как искать в одном или нескольких gzip-архивах определенный файл как из командной строки, так и из графического интерфейса.

Ознакомьтесь с некоторыми примерами командной строки, приведенными ниже, и попробуйте их на своей системе, чтобы узнать, как искать файл в gzip-архиве. Если вы предпочитаете использовать графический интерфейс, перейдите к следующему разделу статьи.

Чтобы перечислить все содержимое сжатого gzip-архива (или любого другого tar-файла), используйте опцию -t в tar. Нам также понадобится опция -f, поскольку после нее мы укажем имя нашего tar-файла. Это вернет полный список всех файлов и каталогов, которые находятся внутри архива. 

$ tar -tf Linux-ISOs.tar.gz

Чтобы получить более подробную информацию о файлах, такую как размер, разрешения, владелец и т.д., вы можете добавить опцию -v. 

$ tar -tvf Linux-ISOs.tar.gz

Это достаточно просто, но для некоторых архивов потенциально могут потребоваться тысячи файлов и каталогов. Чтобы найти определенный файл, вы можете добавить его имя к вашей команде. Если файл не существует в архиве, вы не получите никакого вывода на терминал. 

$ tar -tf Linux-ISOs.tar.gz Slackware.iso

Вы также можете использовать подстановочные знаки в поиске файлов, если вы хотите найти определенный шаблон. 

$ tar -tf Linux-ISOs.tar.gz *.iso

Вы также можете передать команду tar -tf в grep. Это может быть немного лучше, так как grep будет искать любые файлы, соответствующие вашей строке поиска, а не только целые имена файлов. Обратите внимание, что опция -i в нашей команде grep просто делает поиск нечувствительным к регистру. 

$ tar -tf Linux-ISOs.tar.gz | grep -i man

Или мы можем искать несколько разных файлов одновременно, используя следующий синтаксис команды grep. 

$ tar -tf Linux-ISOs.tar.gz | grep -E "Slack|Pop"

Другой вариант, который у нас есть, - использовать текстовый редактор vim для просмотра содержимого сжатого gzip-архива. 

$ vim Linux-ISOs.tar.gz

Самый простой способ поиска в нескольких gzip-архивах одновременно - использовать утилиту zgrep, которая, по сути, является просто grep для сжатых архивов. Следующий пример позволяет определить, что файл, соответствующий шаблону "Ubuntu", находится в файловом архиве Debian-based.tar.gz. 

$ zgrep Ubuntu *.gz

После определения файла, который вы хотите извлечь, вы можете извлечь конкретный файл из gzip-архива.

$ tar xvf Debian-based.tar.gz Ubuntu.iso

Это все команды, необходимые для поиска в одном или нескольких gzip-сжатых архивах определенного файла. Существует больше методов, чем те, которые мы перечислили здесь, но мы обнаружили, что эти методы являются самыми простыми и эффективными при тестировании поиска файлов.

Открытие и просмотр gzip-архивов с помощью графического интерфейса будет немного отличаться в зависимости от установленной среды рабочего стола или дистрибутива Linux. Тем не менее, все современные установки Linux обязательно имеют программу по умолчанию, которая может открывать сжатые tar-архивы, включая gzip-архивы.

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


В соответствии с традициями UNIX-программирования, gzip выполняет только две функции: сжатие и распаковку одного файла; упаковка нескольких файлов в один архив невозможна.

 

Последние материалы