Знайдіть файли, що містять певний текст у Linux
Linux, незалежно від того, який дистрибутив ви використовуєте, постачається з низкою інструментів GUI, які дозволяють шукати файли. Багато сучасних файлових менеджерів підтримують пошук файлів прямо в списку файлів. Однак існує ряд ситуацій, коли вам потрібно використовувати консоль, наприклад, під час сеансу SSH або коли X-сервер не запускається. Ось як можна швидко знайти файли, що містять певний текст, за допомогою терміналу.
Якщо ви можете використовувати графічний інтерфейс, пошук файлів не є проблемою. У моєму улюбленому середовищі робочого столу XFCE файловий менеджер Thunar дозволяє шукати файли, вводячи назву файлу безпосередньо у списку файлів.
Однак жоден із файлових менеджерів, які я пробував, не дозволяє шукати вміст файлів.
Щоб обійти це обмеження під час роботи в сесії GUI, ви можете використовувати Сatfish. Сом - популярний інструмент пошуку. Дозволяє шукати вміст файлу. Вам потрібно натиснути на значок шестірні та включити опцію Пошук у вмісті файлу.
Однак, коли справа доходить до терміналу, ви не можете використовувати будь-який графічний інструмент. Крім того, я вважаю, що Catfish не є корисним і віддаю перевагу класичним консольним інструментам перед ним. Ось методи та інструменти, які я використовую.
Щоб знайти файли, що містять певний текст у Linux, виконайте наступне.
- Відкрийте свою улюблену програму терміналу. термінал XFCE4 це мої особисті переваги.
- Введіть таку команду:
знайти ./ -type f -exec grep -l "текст для пошуку" {} \;
- Це створить список файлів, який містить необхідну частину тексту.
Команда find шукатиме файли, починаючи з поточного каталогу "./". Натомість можна вказати потрібний шлях.
Варіант -тип f каже йому шукати лише файли та виключати каталоги. Крім того, ви можете зробити так, щоб він шукав лише файл певного типу, додавши параметр таким чином:знайти ./ -type f -iname "*.txt" -exec grep -l "текст для пошуку" {} \;
Дивіться наступний знімок екрана:
The -exec Параметр викликає інструмент grep для кожного з відповідних файлів, щоб перевірити їх вміст. Якщо текст знайдено у файлі, його ім’я буде додано до виводу завдяки -l варіант.
Альтернативи
Існують альтернативи описаним вище методам. Перш за все, ви можете використовувати тільки grep інструмент. Спробуйте виконати таку команду:
grep -iRl "текст для пошуку" ./
- -i означає ігнорувати регістр тексту.
- -R означає рекурсивну обробку файлів.
- -l означає "показати ім'я файлу, а не сам результат".
Як бачите, цей метод менш гнучкий, ніж метод знайти команда.
Командир опівночі
Інший метод, який я часто використовую, — Midnight Commander (mc), консольний додаток для керування файлами. На відміну від find або grep, mc не включений за замовчуванням у всі дистрибутиви Linux, які я пробував. Можливо, вам знадобиться встановити його самостійно.
Щоб знайти файли, що містять певний текст за допомогою Midnight Commander, запустіть програму та натисніть на клавіатурі наступну послідовність:
Альт + Зміна + ?
Це відкриє діалогове вікно пошуку.
Заповніть розділ «Назва файлу:». Ви можете вказати щось на кшталт "*.txt", щоб шукати текст лише в текстових файлах.
Тепер заповніть Зміст: коробка. Введіть текст, який містять файли, і натисніть клавішу Enter.
Він знайде всі файли, які відповідають критеріям.
Це воно.