Кратък отговор
Търсене в текстови файлове: Използвайте grep или ripgrep за обикновен текст, код, регистрационни файлове и конфигурационни файлове.
Търсене в документи: Използвайте настолно приложение за PDF, Word, Excel, LibreOffice и други формати.
Ако вместо това търсите файл по име: Използвайте find или locate.
Тествах широк набор от команди и приложения за търсене на файлове в Linux — много повече от разгледаните тук — и избрах най-практичните и ефективни методи. Тествах примерите в Ubuntu със същата колекция от TXT, PDF, ODT, DOCX и други файлове, използвана в цялата статия.
Използвайте таблицата по-долу, за да изберете първо подходящия метод, след което преминете към съответния раздел.
Кой метод за търсене в Linux да използвате?
Най-добрият метод зависи главно от типа файлове, в които трябва да търсите.
| Задача | Най-добра опция |
| Търсене в текстови файлове със стандартна команда на Linux | grep |
| Бързо търсене в текстови файлове в големи папки | ripgrep |
| Намиране на файл по име, а не по съдържание | find или locate |
| Търсене в PDF, Word, LibreOffice, Excel и други документи | SeekFast |
| Използване на безплатен инструмент с отворен код за индексирано търсене в документи | Recoll или DocFetcher |
Инструментите grep и ripgrep търсят в съдържанието на текстови файлове, а find и locate търсят имена и пътища на файлове. Тези инструменти са отлични за технически файлове, но не търсят надеждно в сложни формати на документи. Ето защо правилният избор за папка, пълна с документи, е различен от правилния избор за папка, пълна с регистрационни файлове или код.
Търсене на текст във файлове с командата grep
Командата grep е стандартният инструмент на Linux за намиране на текст във файлове. Тя е най-подходяща за обикновен текст, изходен код, регистрационни файлове, CSV файлове, Markdown файлове и конфигурационни файлове.
За да потърсите дума във файловете .txt в текущата папка, използвайте:
grep "budget" *.txt
За да търсите в папка и всичките ѝ подпапки, използвайте рекурсивно търсене:
grep -R "budget" ~/Documents/stories
На практика обикновено добавям номера на редовете и имена на файловете, защото така резултатите са по-лесни за използване:
grep -RIn "budget" ~/Documents/stories
Ето какво означават опциите:
- -R търси рекурсивно в папките.
- -I пропуска двоичните файлове.
- -n показва номерата на редовете.

Търсене без значение на главни и малки букви
За да пренебрегнете разликите между главни и малки букви, добавете -i:
grep -RIn -i "report" ~/Documents/stories
Това може да намери „report“, „Report“ и „REPORT“.
Търсене само на цели думи
За да намерите съвпадение с цяла дума, добавете -w:
grep -RIn -w "policy" ~/Documents/stories
Така се избягват съвпадения в по-дълги думи като „policyholder“.
Търсене само в определени типове файлове
За да търсите само във файлове с определено разширение, използвайте --include:
grep -RIn --include="*.txt" "budget" ~/Documents/stories
За няколко разширения повторете опцията:
grep -RIn --include="*.txt" --include="*.md" "budget" ~/Documents/stories
Това е полезно за папки, които съдържат много типове файлове, когато искате да търсите само в текстови файлове.
Изключване на папки от търсенето
Големите папки често съдържат директории, в които не искате да търсите, като archive, drafts или резервни копия. Можете да ги изключите по следния начин:
grep -RIn --exclude-dir="archive" --exclude-dir="drafts" "risk" ~/Documents/stories
Така резултатите остават по-прегледни и търсенето може да стане много по-бързо.
Търсене на точна фраза или на няколко низа
За точна фраза я поставете в кавички:
grep -RIn "sales report" ~/Documents/stories
За да търсите някой от няколко низа, добавете по една опция -e за всеки низ:
grep -RIn -e "sales" -e "budget" -e "payment" ~/Documents/stories
Можете също да използвате разширени регулярни изрази с -E:
grep -RInE "customer|product|service" ~/Documents/stories
И двете команди намират ред, съдържащ поне един от низовете. Ако са ви необходими файлове, които съдържат едновременно „sales“ и „payment“, дори на различни редове, филтрирайте имената на файловете на две стъпки:
grep -RIlZ "sales" ~/Documents/stories | xargs -0 -r grep -Il "payment"

Това са най-често използваните случаи на командата grep. За пълна справка вижте ръководството за GNU grep.
Когато grep не е достатъчен
Командата grep е мощна, но все пак е инструмент за търсене в обикновен текст. Обикновено работи добре с файлове, съхранявани като четим текст. Тя не е добро универсално решение за документи на Word, електронни таблици на Excel, файлове на LibreOffice, PDF файлове, електронни книги или други формати на документи.
Ако се опитате да използвате grep в папка, пълна с различни видове документи, често ще пропуснете важни съвпадения или ще получите нечетлив изход. В такива случаи преминете направо към инструментите за търсене в документи.
Използване на ripgrep за по-бързо търсене от командния ред
Инструментът ripgrep, който обикновено се стартира като rg, е съвременен инструмент за търсене от командния ред. Официалното ръководство за ripgrep обяснява, че той по подразбиране търси рекурсивно в директориите и прилага автоматично филтриране. При рекурсивни търсения в големи папки с код и текст той често е по-бърз от стандартния grep.
За да търсите в текущата папка и нейните подпапки, използвайте:
rg "budget"
За да търсите в конкретна папка:
rg "budget" ~/Documents/stories
За да търсите само в определени типове файлове:
rg "budget" -g "*.txt" ~/Documents/stories
Инструментът ripgrep също спазва .gitignore по подразбиране, което е полезно в проекти с изходен код, защото автоматично пропуска много генерирани или несъществени файлове.
Използвайте ripgrep, когато търсите в код, регистрационни файлове, Markdown, конфигурационни файлове или друг обикновен текст. За PDF, Word, LibreOffice, Excel и други документи използвайте инструмент за търсене в документи.

Кое да използвате: grep или ripgrep?
И двата инструмента търсят в съдържание от обикновен текст, но са подходящи за малко по-различни работни процеси:
- Използвайте grep като стандартна команда, която вече е налична в почти всяка система с Linux.
- Използвайте ripgrep за бързо рекурсивно търсене в хранилища с код и големи текстови папки.
- Инструментът ripgrep търси в подпапките по подразбиране и спазва
.gitignore, докато командата grep изисква опции за рекурсивно търсене и търси по-буквално, освен ако не изключите определени пътища. - За PDF, Word, Excel, LibreOffice и други сложни формати на документи използвайте инструмент за търсене в документи вместо която и да е от двете команди.
Как да инсталирате ripgrep в Ubuntu, Mint, Fedora, Debian и други дистрибуции на Linux
Командите за търсене с ripgrep са еднакви във всички дистрибуции на Linux. Единствено командата за инсталиране се променя според мениджъра на пакети. Командите по-долу следват официалните инструкции за инсталиране на ripgrep.
| Дистрибуция | Инсталиране на ripgrep |
| Ubuntu, Linux Mint, Debian | sudo apt install ripgrep |
| Fedora | sudo dnf install ripgrep |
| openSUSE | sudo zypper install ripgrep |
| Arch Linux | sudo pacman -S ripgrep |
Намиране на файлове и директории по име в Linux
Ако знаете цялото или част от името на файла, използвайте командата find. Ръководството за GNU Findutils описва филтрите за име на файл, време, размер и други характеристики. Командата не търси в текста, съхраняван във файловете; за това използвайте grep или ripgrep.
За да намерите файлове, чиито имена съдържат определена дума, в папката stories и нейните подпапки, използвайте:
find ~/Documents/stories -type f -iname "*profit*"
Използвайте -iname за частично съвпадение без значение на главни и малки букви:
find ~/Documents/stories -type f -iname "*shopping*"
Звездичките съответстват на произволни знаци преди или след „shopping“. За да намерите директория вместо файл, променете -type f на -type d:
find ~/Documents/stories -type d -iname "*archive*"
Можете също да филтрирате файловете по разширение, дата на промяна или размер:
find ~/Documents/stories -type f -iname "*.pdf"
find ~/Documents/stories -type f -mtime -7
find ~/Documents/stories -type f -size +100M
Тези команди намират съответно PDF файлове, файлове, променени приблизително през последните седем дни, и файлове, по-големи от 100 MB.
По-бързо намиране на файлове с locate
Командата locate търси в база данни с имена на файлове, вместо всеки път да сканира файловата система, затова търсенето по име обикновено е много по-бързо, отколкото с find. Ръководството за plocate обяснява как работи това индексирано търсене:
locate -i "profit"
Тъй като locate използва индекс, съвсем новите файлове може да не се появят, докато базата данни не бъде актуализирана. В системи, в които имате разрешение да я обновите, използвайте:
sudo updatedb
Използвайте find, когато са ви необходими актуални резултати или подробни филтри. Използвайте locate, когато искате най-бързия начин да намерите съществуващо име на файл в индексирани местоположения.


Най-добрите инструменти за търсене в документи за Linux
Инструментите grep и ripgrep са предназначени за обикновен текст. За да търсите в PDF, Word, Excel, LibreOffice, електронни книги и други формати, използвайте някое от приложенията за търсене в документи по-долу; сканираните PDF файлове, съдържащи само изображения, първо изискват OCR.
SeekFast е много подходящ, когато искате да търсите в папки с различни типове документи, да преглеждате изреченията със съвпадения и да виждате резултати, подредени по релевантност, без да работите в терминала. Той е особено удобен, когато трябва да търсите в нова или често променяща се папка.
Recoll и DocFetcher са добър избор, ако предпочитате безплатен софтуер с отворен код и нямате нищо против предварително да създадете индекс. Индексирането изисква известна подготовка, но може да направи многократните търсения в установена колекция от документи по-практични.
Настолното приложение ChatGPT използва различен подход. То може да работи с избрани от вас папки, да отговаря на въпроси на естествен език, да сравнява файлове и да обобщава резултатите. Най-добре е да се използва като допълнение, когато трябва да разберете информацията, а не като единствен инструмент за изчерпателно търсене на точни съвпадения.
SeekFast
SeekFast е инструмент за търсене в документи за Windows, macOS и Linux. Той е предназначен за търсене в големи колекции от документи, а не само в обикновени текстови файлове от терминала.
Основното предимство е удобството. Избирате папка, въвеждате думите за търсене и виждате изреченията със съвпадения, преди да отворите всеки файл. Това е полезно, когато не знаете точното име на файла и трябва да търсите в много документи.

SeekFast е особено полезен, когато папката ви съдържа различни типове документи, защото може да търси в много формати и да подрежда резултатите по релевантност. Това го доближава повече до търсенето в интернет, отколкото до традиционното търсене на точни съвпадения във файлове.
Основните функции включват:
- Търсене в документи – търсене в над 120 поддържани файлови формата, включително PDF, Word, LibreOffice, Excel, текстови файлове и електронни книги.
- Предварителен преглед на изреченията със съвпадения – виждате съответния текст, преди да отворите файла.
- Резултати, подредени по релевантност – файловете с по-добри съвпадения се показват по-напред в резултатите.
- Търсене по няколко ключови думи – намирате документи дори когато думите не са една до друга.
- Графичен работен процес – не е необходимо да съставяте терминални команди за обичайните задачи за търсене в документи.
Предимства
- Много по-удобен от grep за папки с реални документи.
- Работи добре, когато помните думи от документа, но не и името на файла.
- Показва контекст, за да можете да оцените резултатите, преди да отворите файловете.
- Полезен за смесени папки с PDF, Office, LibreOffice, текстови и други формати.
Недостатъци
- Безплатната версия на SeekFast е ограничена до търсене в не повече от 50 файла наведнъж.
- Не е предназначен да замени grep или ripgrep при търсене в изходен код.
- Не поддържа разширени работни процеси с регулярни изрази като специализираните инструменти от командния ред.
Ако основната ви задача е да търсите в много документи, а не в код или регистрационни файлове, изтеглете SeekFast и го изпробвайте с някоя от папките си с документи.
Recoll
Recoll е безплатен настолен инструмент за търсене с отворен код за Linux и други Unix-подобни системи. Той използва индекс, което означава, че първо сканира избраните от вас папки, а след това ви позволява да търсите бързо в тях.

Поддръжката на някои формати на документи зависи от помощните приложения, инсталирани в системата ви. Това е добър избор, ако искате настолен инструмент с отворен код за индексирано търсене и нямате нищо против да отделите време за конфигурирането му.
Предимства
- Безплатен и с отворен код.
- Работи добре като индексиран настолен инструмент за търсене в Linux.
- Може да търси в много формати на документи с подходящите помощни програми.
Недостатъци
- Първоначалното индексиране и конфигуриране може да отнемат време.
- Работният процес може да изглежда твърде технически за обикновените потребители.
- Поддръжката на формати на документи може да зависи от инсталираните системни пакети.
DocFetcher
DocFetcher е безплатно настолно приложение за търсене с отворен код за Linux, Windows и macOS. DocFetcher Pro е отделна платена версия с допълнителни функции. Подобно на Recoll, то работи чрез създаване на индекси за избраните от вас папки.

DocFetcher поддържа често срещани формати на документи като PDF, Microsoft Office, OpenDocument, HTML и обикновен текст. Той може да бъде полезен, когато искате безплатен инструмент за различни платформи и нямате нищо против да създавате индекси преди търсенето.
Предимства
- Стандартното издание на DocFetcher е безплатно и с отворен код.
- Предлага се за Linux, Windows и macOS.
- Може да показва предварителен преглед на текст от индексираните документи.
Недостатъци
- Изисква създаване на индекс, преди да можете да търсите в съдържанието на папка.
- Интерфейсът изглежда по-остарял от този на много съвременни инструменти за търсене.
- По-малко удобен е, ако често търсите еднократно в папки, без предварително да подготвяте индекс.
Настолно приложение ChatGPT
Настолното приложение ChatGPT се предлага като предварителна версия за поддържаните дистрибуции на Linux. То не е традиционна програма за търсене на файлове. Вместо това представлява работна среда с изкуствен интелект, която може да работи с файловете в избрани от вас папки.
За да го използвате с локални файлове, отворете локална папка в ChatGPT Work или Codex и предоставете достъп до файловете, които искате да използвате. След това можете да задавате въпроси на естествен език, като например:
- „Намери документите, в които се обсъждат бизнес рискове.“
- „Сравни отчетите за продажбите и покажи най-важните разлики.“
- „Намери информацията, свързана с този проект, и я обобщи.“

Този подход е най-полезен, когато не помните точната формулировка. ChatGPT може да помогне при търсене по смисъл, да свързва информация от няколко файла, да обобщава намереното и да обяснява резултатите. Codex може също да търси и анализира проекти с изходен код.
Предимства
- Приема въпроси на естествен език, а не само ключови думи или регулярни изрази.
- Може да обобщава, сравнява и тълкува информация от множество файлове.
- Полезно е, когато следващата стъпка е да разберете резултатите, а не само да намерите дадена фраза.
Недостатъци
- Не е предназначено да гарантира намирането на всяко точно срещане, затова използвайте grep или ripgrep, когато изчерпателността е от значение.
- Не предлага същия специализиран работен процес за индексирано търсене като SeekFast, Recoll или DocFetcher.
- Версията за Linux все още е предварителна и официално поддържа само избрани дистрибуции.
- Изисква акаунт в ChatGPT и използва онлайн услуги, вместо да работи изцяло офлайн. Прегледайте как OpenAI използва данните от ChatGPT и Codex, както и изискванията си за поверителност, преди да го използвате с чувствителни документи.
Използвайте ChatGPT като допълнение към традиционните инструменти за търсене: grep и ripgrep са по-подходящи за търсене на точен текст, приложенията за търсене в документи са по-подходящи за преглеждане на колекции с предвидими резултати, а ChatGPT е полезен, когато искате да разберете, сравните или обобщите намерената информация.
Заключение
В тази статия споделих методите, които дадоха най-добри резултати в тестовете ми за намиране на файлове и търсене в съдържанието им в Linux. Потребителите на Linux обаче често имат свои предпочитани инструменти и работни процеси. Кой метод използвате вие? Пропуснал ли съм полезна команда или приложение?
Можете да споделите опита си по един от следните начини:
- Оставете коментар чрез формуляра по-долу.
- Присъединете се към нашата дискусия в Reddit.
Често задавани въпроси
1. Как да намеря файл по име в Linux?
Използвайте командата find. Например:
find ~/Documents/stories -type f -iname "*profit*"
Това претърсва папката stories и нейните подпапки за имена на файлове, съдържащи „profit“, без значение на главните и малките букви.
2. Каква е разликата между find и grep?
Командата find търси имена на файлове, пътища и свойства на файлове. Командата grep търси текст, съхраняван във файлове с обикновен текст. Ако знаете името на файла, използвайте find; ако помните думи от файла, използвайте grep или инструмент за търсене в документи.
3. Трябва ли да използвам find или locate?
Използвайте find за актуални резултати и подробни филтри. Използвайте locate за по-бързо търсене на име на файл от предварително създаден индекс. Новосъздадените файлове може да не се показват в locate, докато базата му данни не бъде актуализирана.
4. Как да търся текст във всички файлове в папка на Linux?
Командата grep -R е стандартният избор. Например:
grep -RIn "budget" ~/Documents/stories
Това работи най-добре за файлове с обикновен текст, изходен код, регистрационни файлове и конфигурационни файлове.
5. Как да търся и в подпапките?
Използвайте рекурсивно търсене с grep -R:
grep -RIn "budget" ~/Documents/stories
Тази команда претърсва папката stories и нейните подпапки, пропуска двоичните файлове и показва номерата на редовете.
6. Как да търся само в определени типове файлове?
Използвайте --include. Например:
grep -RIn --include="*.txt" "budget" ~/Documents/stories
Можете да повторите --include за няколко разширения.
7. Как да изключа папки от търсенето с grep?
Използвайте --exclude-dir. Например:
grep -RIn --exclude-dir="archive" --exclude-dir="drafts" "risk" ~/Documents/stories
8. Как да търся няколко възможни думи?
Добавете по една опция -e за всеки низ. Например:
grep -RIn -e "sales" -e "budget" -e "payment" ~/Documents/stories
Това намира редове, съдържащи някой от низовете.
9. По-добър ли е ripgrep от grep?
Инструментът ripgrep често е по-бърз и по-удобен за рекурсивно търсене в големи папки с код и текст, докато командата grep е налична по подразбиране в почти всяка система с Linux и е идеална за обикновено търсене в текст. Нито един от двата инструмента не е универсален инструмент за търсене в документи.
10. Защо grep не намира текст в моите PDF или Word файлове?
Командата grep е предназначена за обикновен текст. PDF, Word, LibreOffice и Excel файловете съхраняват текста в по-сложни формати, затова grep може да пропуска съвпадения или да показва нечетлив изход. За тези файлове използвайте инструмент за търсене в документи.
11. Кой е най-добрият начин за търсене в PDF, Word и LibreOffice файлове в Linux?
Използвайте инструмент за търсене, който разпознава форматите на документите. SeekFast е удобен, когато искате предварителен преглед и резултати, подредени по релевантност. Recoll и DocFetcher са добри алтернативи с отворен код, ако предпочитате индексирано настолно търсене.
12. Работи ли SeekFast в Linux?
Да. SeekFast има версия за Linux и може да се използва за търсене в много формати на документи чрез графичен интерфейс.
13. Трябва ли да използвам grep, ripgrep или SeekFast?
Използвайте grep за обикновено търсене в текстови файлове. Използвайте ripgrep за бързо рекурсивно търсене в папки с код и текст. Използвайте SeekFast, когато трябва да търсите в PDF, Word, LibreOffice, Excel и други документи с предварителен преглед.

