Як використовувати команди zgrep і zipgrep для пошуку стиснутих файлів

Цей посібник покаже вам, як шукати стислі файли на a Linux комп’ютер для рядка тексту або певного виразу.

Як шукати та фільтрувати результати за допомогою команди grep

Однією з найпотужніших команд Linux є grep, що розшифровується як Global Regular Expressions Print. Ви можете використовувати grep для пошуку шаблонів у вмісті файлу або результатів іншої команди.

Як приклад запустіть наступне команда ps щоб переглянути список процесів, які запущені на вашому комп’ютері:

ps -ef

Результати швидко прокручуються на екрані. Якщо є велика кількість результатів, це робить перегляд інформації заплутаним.

Команда Linux ps

Щоб зупинити прокручування сторінки, скористайтеся більше команди щоб перерахувати одну сторінку результатів за раз, як показано нижче:

ps -ef | більше. 

Незважаючи на те, що вихід з вищевказаної команди кращий, ніж попередній, вам все одно доведеться переглядати результати, щоб знайти те, що вам потрібно.

Команда grep дозволяє фільтрувати результати на основі критеріїв, які ви їй надсилаєте. Наприклад, для пошуку всіх процесів із UID, встановленим на корінь, виконайте таку команду:

ps -ef | корінь grep. 
Linux ps з grep

Команда grep також працює з файлами. Уявіть, що у вас є файл, який містить список назв книг, і ви хочете перевірити, чи містить файл Червона Шапочка. Ви можете шукати файл наступним чином:

grep список книг «Червона Шапочка». 
Linux grep файл

The команда grep є потужним, і з ним можна використовувати багато корисних перемикачів.

Як шукати стиснені файли за допомогою команди zgrep

Маловідомим, але дуже потужним інструментом є zgrep. Команда zgrep дозволяє шукати вміст стисненого файлу без попереднього вилучення вмісту. Команду zgrep можна використовувати на zip файли або файли, стиснуті за допомогою команда gzip.

Яка різниця? Zip-файл може містити декілька файлів, тоді як файл, стиснутий за допомогою команди gzip, містить лише оригінальний файл.

Щоб шукати текст у файлі, стиснутому за допомогою gzip, введіть таку команду:

zgrep вираз файлу для пошуку. 

Наприклад, уявіть, що список книг був стиснутий за допомогою gzip. Ви можете шукати текст червона шапочка у стисненому файлі за допомогою такої команди:

zgrep «Червона Шапочка» bookslist.gz. 
Linux zgrep

Ви можете використовувати будь-який вираз і всі параметри, доступні за допомогою команди grep, як частину команди zgrep.

Як шукати стиснені файли за допомогою команди zipgrep

Команда zipgrep використовується для пошуку шаблонів у zip-файлі. Команда zgrep добре працює з файлами, стиснутими за допомогою gzip, але не так добре працює з файлами, стиснутими за допомогою утиліти zip. Ви можете використовувати zgrep, якщо zip-файл містить один файл, але більшість zip-файлів містить більше одного файлу.

Наприклад, уявіть, що у вас є файл з назвою книги з такими назвами:

  • Гаррі Поттер і таємна кімната
  • Приборкання норовливої
  • Про мишей і людей
  • Путівник по галактиці для автостопників
  • Гаррі Поттер і Орден Фенікса

Крім того, уявіть, що у вас є файл з назвою фільми з такими назвами:

  • Матриця
  • Гаррі Поттер і таємна кімната
  • Гаррі Поттер і Кубок вогню
  • Зоряні війни: Нова надія

Тепер уявіть, що ці два файли були стиснуті за допомогою формату zip у файл під назвою media.zip. Ви можете використовувати команду zipgrep, щоб знайти шаблони у файлах у zip-файлі. Наприклад:

Ім'я файлу шаблону zipgrep. 

Щоб знайти всі випадки Гаррі Поттер, скористайтеся такою командою:

zipgrep "Гаррі Поттер" media.zip. 

Вихід виглядає наступним чином:

книги: Гаррі Поттер і таємна кімната
книги: Гаррі Поттер і Орден Фенікса
фільми: Гаррі Поттер і таємна кімната
фільми: Гаррі Поттер і Кубок вогню.
Linux zipgrep

Оскільки ви можете використовувати будь-який вираз із zipgrep, який ви можете використовувати з grep, це робить інструмент дуже потужний, і це робить пошук zip-файлів простіше, ніж розпаковування, пошук і потім стиснення знову.

Якщо ви хочете шукати лише певні файли в zip-файлі, вкажіть файли для пошуку в zip-файлі як частину команди, як показано нижче:

zipgrep фільми "Гаррі Поттер" media.zip. 

Вихід виглядає наступним чином:

фільми: Гаррі Поттер і таємна кімната
фільми: Гаррі Поттер і Кубок вогню.
Пошук zipgrep Linux за файлом

Якщо ви хочете шукати всі файли, крім одного, скористайтеся такою командою:

zipgrep "Гаррі Поттер" media.zip -x книги. 

Це дає той самий результат, що й раніше, оскільки шукає всі файли всередині media.zip крім книжок.