Najděte soubory obsahující konkrétní text v Linuxu
Linux, bez ohledu na distribuci, kterou používáte, přichází s řadou nástrojů GUI, které umožňují vyhledávání souborů. Mnoho moderních správců souborů podporuje vyhledávání souborů přímo v seznamu souborů. Existuje však řada situací, kdy potřebujete konzolu použít, například během relace SSH nebo když se X server nespustí. Zde je návod, jak pomocí terminálu rychle najít soubory obsahující konkrétní text.
Pokud umíte používat GUI, hledání souborů není problém. V mém oblíbeném desktopovém prostředí XFCE umožňuje správce souborů Thunar vyhledávání souborů zadáním názvu souboru přímo do seznamu souborů.
Žádný ze správců souborů, které jsem zkoušel, však neumožňuje vyhledávání obsahu souborů.
Chcete-li obejít toto omezení při práci v relaci GUI, můžete použít Сatfish. Сatfish je oblíbený vyhledávací nástroj. Umožňuje vyhledávání obsahu souboru. Musíte kliknout na ikonu ozubeného kola a povolit možnost Prohledejte obsah souboru.
Pokud však jde o terminál, nemůžete použít žádný grafický nástroj. Také považuji Catfish za neužitečný a dávám přednost klasickým konzolovým nástrojům. Zde jsou metody a nástroje, které používám.
Chcete-li najít soubory obsahující konkrétní text v Linuxu, Udělej následující.
- Otevřete svou oblíbenou terminálovou aplikaci. Terminál XFCE4 je moje osobní preference.
- Zadejte následující příkaz:
find ./ -type f -exec grep -l "text k nalezení" {} \;
- Tím se vytvoří seznam souborů, který obsahuje požadovanou textovou část.
Příkaz find vyhledá soubory začínající v aktuálním adresáři "./". Místo toho můžete zadat požadovanou cestu.
Možnost - typ f říká, že má hledat pouze soubory a vyloučit adresáře. Můžete také nastavit, aby vyhledával pouze určitý typ souboru přidáním možnosti takto:find ./ -type f -iname "*.txt" -exec grep -l "text k nalezení" {} \;
Podívejte se na následující snímek obrazovky:
The -exec Volba zavolá nástroj grep pro každý z odpovídajících souborů, aby zkontroloval jejich obsah. Pokud je text v souboru nalezen, jeho název bude přidán do výstupu, díky -l možnost.
Alternativy
K výše popsaným metodám existují alternativy. Za prvé, můžete použít pouze grep nářadí. Zkuste následující příkaz:
grep -iRl "text k nalezení" ./
- -i znamená ignorovat malá a velká písmena.
- -R znamená rekurzivní zpracování souborů.
- -l znamená "zobrazit název souboru, nikoli samotný výsledek".
Jak vidíte, tato metoda je méně flexibilní než nalézt příkaz.
Půlnoční velitel
Další metodou, kterou často používám, je Midnight Commander (mc), aplikace správce souborů konzoly. Na rozdíl od find nebo grep není mc ve výchozím nastavení součástí všech linuxových distribucí, které jsem zkoušel. Možná jej budete muset nainstalovat sami.
Chcete-li pomocí Midnight Commander najít soubory obsahující určitý text, spusťte aplikaci a stiskněte na klávesnici následující sekvenci:
Alt + Posun + ?
Tím se otevře vyhledávací dialog.
Vyplňte část "Název souboru:". Můžete zadat něco jako "*.txt" pro vyhledávání textu pouze v textových souborech.
Nyní vyplňte Obsah: krabice. Zadejte text, který soubory obsahují, a stiskněte klávesu Enter.
Najde všechny soubory, které odpovídají kritériím.
A je to.