Намерете файлове, съдържащи специфичен текст в Linux
Linux, независимо от дистрибуцията, която използвате, идва с редица GUI инструменти, които позволяват търсене на файлове. Много съвременни файлови мениджъри поддържат търсене на файлове точно в списъка с файлове. Има обаче редица ситуации, когато трябва да използвате конзолата, например по време на SSH сесия или когато X сървърът не се стартира. Ето как можете бързо да намерите файлове, съдържащи конкретен текст, като използвате терминала.
Реклама
Ако можете да използвате GUI, търсенето на файлове не е проблем. В любимата ми среда на работния плот XFCE файловият мениджър Thunar позволява търсене на файлове, като напишете името на файла директно в списъка с файлове.
Въпреки това, нито един от файловите мениджъри, които съм пробвал, не позволява търсене на файлово съдържание.
За да заобиколите това ограничение, когато работите в GUI сесия, можете да използвате Сatfish. Сatfish е популярен инструмент за търсене. Позволява търсене на съдържанието на файла. Трябва да кликнете върху иконата на зъбно колело и да активирате опцията
Търсене в съдържанието на файла.Въпреки това, когато става въпрос за терминал, не можете да използвате никакъв графичен инструмент. Също така намирам, че Catfish не е полезен и предпочитам класическите конзолни инструменти пред него. Ето методите и инструментите, които използвам.
За да намерите файлове, съдържащи конкретен текст в Linux, направете следното.
- Отворете любимото си терминално приложение. XFCE4 терминал е лично мое предпочитание.
- Въведете следната команда:
find ./ -type f -exec grep -l "текст за намиране" {} \;
- Това ще създаде списък с файлове, който съдържа необходимата текстова част.
Командата find ще търси файлове, започващи от текущата директория, "./". Вместо това можете да посочите желания път.
Опцията -тип f му казва да търси само файлове и да изключва директории. Освен това можете да го накарате да търси само за определен тип файл, като добавите опцията, както следва:find ./ -type f -iname "*.txt" -exec grep -l "текст за намиране" {} \;
Вижте следната екранна снимка:
В -exec опцията извиква инструмента grep за всеки от съответстващите файлове, за да провери съдържанието им. Ако текстът бъде намерен във файла, името му ще бъде добавено към изхода, благодарение на -л вариант.
Алтернативи
Има алтернативи на методите, описани по-горе. На първо място, можете да използвате само grep инструмент. Опитайте следната команда:
grep -iRl "текст за намиране" ./
- -i означава игнориране на главни и малки букви.
- -R означава рекурсивна обработка на файлове.
- -l означава "покажи името на файла, а не самия резултат".
Както можете да видите, този метод е по-малко гъвкав от намирам команда.
Среднощния командир
Друг метод, който често използвам, е Midnight Commander (mc), приложението за конзолен файлов мениджър. За разлика от find или grep, mc не е включен по подразбиране във всички Linux дистрибуции, които съм пробвал. Може да се наложи да го инсталирате сами.
За да намерите файлове, съдържащи конкретен текст с помощта на Midnight Commander, стартирайте приложението и натиснете следната последователност на клавиатурата:
Alt + Shift + ?
Това ще отвори диалоговия прозорец за търсене.
Попълнете секцията „Име на файл:“. Можете да посочите нещо като "*.txt", за да търсите вашия текст само в текстови файлове.
Сега попълнете съдържание: кутия. Въведете текста, който съдържат файловете, и натиснете клавиша Enter.
Той ще намери всички файлове, които отговарят на критериите.
Това е.