Způsoby platby Abuse

Vyhledávání souborů podle obsahu v Linuxu: ack a ripgrep

03.05.2023, 23:33

Použití vyhledávání souborů podle obsahu v systému Linux může výrazně snížit čas a úsilí při hledání konkrétních informací ve velkých a složitých souborových systémech.

Proč potřebujete vyhledávat soubory podle obsahu

Toto vyhledávání může být užitečné zejména tehdy, když chcete najít soubory, které obsahují určitý řetězec nebo klíčové slovo, nebo když chcete najít všechny soubory, které odpovídají určitému vzoru nebo kritériu.

Vyhledávání souborů podle obsahu lze použít k různým úkolům, například k vyhledávání:

  • konkrétní text v rozsáhlých textových souborech
  • konfigurační soubory a skripty obsahující určitá nastavení nebo příkazy
  • soubory, které obsahují konkrétní údaje, například uživatelská jména nebo telefonní čísla.
  • soubory podle typu obsahu, například vyhledání všech souborů obsahujících obrázky JPEG nebo dokumenty PDF.

Obecným účelem vyhledávání souborů podle obsahu je usnadnit práci se souborovým systémem a najít v něm potřebné informace.

ack

Začněme nástrojem ack. Byl vytvořen v roce 2005 jako alternativa k grepu a rychle si získal oblibu mezi vývojáři.

Oproti grepu má několik výhod, mj:

  • inteligentnější vyhledávání souborů a výjimek. Ack ve výchozím nastavení vyhledává pouze v souborech, které by mohly mít smysl, například s vyloučením složek .svn nebo .git. A můžete si přidat vlastní pravidla a výjimky;
  • Ack ve výchozím nastavení prohledává skryté soubory a adresáře;
  • Ack se nesnaží prohledávat všude, dokonce ani v systémových složkách, jako grep. To znamená, že můžete snadno najít soubory skryté v systému.

Příklady použití ack:

  • Vyhledat všechny soubory v aktuální složce a jejích podsložkách, které obsahují slovo " test": ack "test".
  • Totéž, ale s vyloučením souborů s příponou .bak: ack "test" --ignore-file=match:/.bak$/
  • Vyhledání všech souborů v aktuální složce obsahujících řetězec "hello" a vypsání prvních dvou řádků každého souboru: ack "hello" --heading --max-count=2

ripgrep

Druhým zajímavým nástrojem je ripgrep. V mnoha ohledech se podobá ack, ale používá rychlejší vyhledávací algoritmus, což je užitečné zejména pro velké projekty.

Zde je několik příkladů:

  1. Najděte všechny soubory v aktuální složce a jejích podsložkách, které obsahují slovo "test": rg "test"
  2. Totéž, ale s vyloučením souborů s příponou .bak: rg "test" --glob "!*.bak"
  3. Vyhledání všech souborů v aktuální složce obsahujících řetězec "hello" a vypsání prvních dvou řádků každého souboru: rg "hello" --heading --max-columns=2

Na závěr stojí za zmínku fzf. Není to jen vyhledávač řetězců jako ack a ripgrep. Fzf se používá jako nástroj pro vyhledávání souborů, složek a položek v seznamu. Jinak funguje podobně jako ack/ripgrep, ale s přidanou možností živého filtrování výsledků. Zde je několik příkladů:

  • Vyhledávání souborů začínajících písmenem F v počítači: locate F | fzf -m
  • Ukončit aktuální složku a přejít do požadovaného adresáře: cd **<TAB> | fzf
  • Vyberte revizi SVN a zkopírujte její číslo do schránky: svn log | fzf --reverse --ansi | awk '{print $1}' | pbcopy

Doufejme, že vám tyto nástroje pomohou rychle a efektivně najít potřebné soubory a řetězce. Ať už si vyberete kterýkoli z nich, všechny nabízejí pokročilé vyhledávání, které může výrazně urychlit vaši práci.