Nájdite súbory obsahujúce konkrétny text v systéme Linux
Linux, bez ohľadu na distribúciu, ktorú používate, prichádza s množstvom nástrojov GUI, ktoré umožňujú vyhľadávanie súborov. Mnoho moderných správcov súborov podporuje vyhľadávanie súborov priamo v zozname súborov. Existuje však množstvo situácií, keď potrebujete použiť konzolu, napríklad počas relácie SSH alebo keď sa X server nespustí. Tu je návod, ako pomocou terminálu rýchlo nájsť súbory obsahujúce konkrétny text.
Ak viete použiť GUI, vyhľadávanie súborov nie je problém. V mojom obľúbenom desktopovom prostredí XFCE umožňuje správca súborov Thunar vyhľadávanie súborov zadaním názvu súboru priamo do zoznamu súborov.
Žiadny zo správcov súborov, ktoré som skúšal, však neumožňuje vyhľadávanie obsahu súboru.
Ak chcete obísť toto obmedzenie pri práci v relácii GUI, môžete použiť Сatfish. Сatfish je populárny vyhľadávací nástroj. Umožňuje vyhľadávanie obsahu súboru. Musíte kliknúť na ikonu ozubeného kolieska a povoliť túto možnosť Vyhľadajte obsah súboru.
Pokiaľ však ide o terminál, nemôžete použiť žiadny grafický nástroj. Tiež považujem Catfish za neužitočný a uprednostňujem pred ním klasické konzolové nástroje. Tu sú metódy a nástroje, ktoré používam.
Ak chcete nájsť súbory obsahujúce konkrétny text v systéme Linux, urobte nasledovné.
- Otvorte svoju obľúbenú terminálovú aplikáciu. Terminál XFCE4 je moja osobná preferencia.
- Zadajte nasledujúci príkaz:
nájsť ./ -type f -exec grep -l "text na nájdenie" {} \;
- Tým sa vytvorí zoznam súborov, ktorý obsahuje požadovanú textovú časť.
Príkaz find vyhľadá súbory začínajúce od aktuálneho adresára „./“. Namiesto toho môžete zadať požadovanú cestu.
Možnosť - typ f povie mu, aby hľadal iba súbory a vylúčil adresáre. Môžete ho tiež prinútiť hľadať iba určitý typ súboru pridaním možnosti takto:find ./ -type f -name "*.txt" -exec grep -l "text, ktorý sa má nájsť" {} \;
Pozrite si nasledujúcu snímku obrazovky:
The -exec voľba volá nástroj grep pre každý zo zodpovedajúcich súborov, aby skontroloval ich obsah. Ak sa text nájde v súbore, jeho názov bude pridaný do výstupu, vďaka -l možnosť.
Alternatívy
Existujú alternatívy k metódam opísaným vyššie. Po prvé, môžete použiť iba grep nástroj. Skúste nasledujúci príkaz:
grep -iRl "text na nájdenie" ./
- -i znamená ignorovať malé a veľké písmená.
- -R znamená rekurzívne spracovanie súborov.
- -l znamená "zobraziť názov súboru, nie samotný výsledok".
Ako vidíte, táto metóda je menej flexibilná ako metóda Nájsť príkaz.
Polnočný veliteľ
Ďalšou metódou, ktorú často používam, je Midnight Commander (mc), aplikácia správcu súborov konzoly. Na rozdiel od find alebo grep, mc nie je štandardne zahrnutý vo všetkých linuxových distribúciách, ktoré som skúšal. Možno ho budete musieť nainštalovať sami.
Ak chcete nájsť súbory obsahujúce konkrétny text pomocou Midnight Commander, spustite aplikáciu a na klávesnici stlačte nasledujúcu postupnosť:
Alt + Shift + ?
Tým sa otvorí dialógové okno vyhľadávania.
Vyplňte časť „Názov súboru:“. Môžete zadať niečo ako „*.txt“ na vyhľadávanie textu iba v textových súboroch.
Teraz vyplňte Obsah: box. Zadajte text, ktorý súbory obsahujú, a stlačte kláves Enter.
Nájde všetky súbory, ktoré zodpovedajú kritériám.
To je všetko.