Fizetési módok Abuse

Fájlok keresése tartalom alapján Linuxban: ack és ripgrep

03.05.2023, 23:33

A Linuxban a tartalom szerinti fájlkeresés használata jelentősen csökkentheti a nagy és összetett fájlrendszerekben való keresés idejét és erőfeszítéseit.

Miért van szükség a fájlok tartalom szerinti keresésére

Ez a keresés különösen hasznos lehet, ha olyan fájlokat szeretne megtalálni, amelyek egy bizonyos karakterláncot vagy kulcsszót tartalmaznak, vagy ha az összes olyan fájlt szeretné megtalálni, amely megfelel egy bizonyos mintának vagy kritériumnak.

A fájlok tartalom szerinti keresése különböző feladatokhoz használható, például a következőkhöz:

  • meghatározott szöveg nagyméretű szövegfájlokban
  • bizonyos beállításokat vagy parancsokat tartalmazó konfigurációs fájlok és parancsfájlok
  • meghatározott adatokat, például felhasználóneveket vagy telefonszámokat tartalmazó fájlok keresése.
  • fájlok tartalomtípus szerinti keresése, például az összes JPEG-képet vagy PDF-dokumentumot tartalmazó fájl keresése.

A fájlok tartalom szerinti keresésének általános célja, hogy megkönnyítse a fájlrendszerrel való munkát, és a fájlrendszerben megtalálja a szükséges információkat.

ack

Kezdjük az ack segédprogrammal. Ezt 2005-ben hozták létre a grep alternatívájaként, és hamar népszerűvé vált a fejlesztők körében.

Számos előnye van a grep-vel szemben, többek között:

  • Okosabb fájl- és kivételkeresés. Az ack alapértelmezés szerint csak olyan fájlokban keres, amelyeknek lehet értelme, például az .svn vagy .git mappák kizárásával. És saját szabályokat és kivételeket is hozzáadhatsz;
  • Az Ack alapértelmezés szerint keres rejtett fájlokat és könyvtárakat;
  • Az Ack nem próbál mindenhol keresni, még a rendszermappákban sem, mint a grep. Ez azt jelenti, hogy könnyen megtalálhatja a rendszerében elrejtett fájlokat.

Példák az ack használatára:

  • Az aktuális mappában és almappáiban található összes olyan fájl keresése, amely tartalmazza a "teszt" szót: ack "teszt"
  • Ugyanez, de a .bak kiterjesztésű fájlok kizárásával : ack "test" --ignore-file=match:/.bak$/
  • Az aktuális mappában lévő összes olyan fájl megkeresése, amely tartalmazza a "hello" karakterláncot, és minden fájl első 2 sorának kiadása: ack "hello" --heading --max-count=2

ripgrep

A második érdekes eszköz a ripgrep. Sok tekintetben hasonlít az ack-re, de gyorsabb keresési algoritmust használ, ami különösen nagy projekteknél teszi hasznossá.

Íme néhány példa:

  1. Az aktuális mappában és annak almappáiban található összes olyan fájl megkeresése, amely tartalmazza a "test" szót: rg "test"
  2. Ugyanez, de a .bak kiterjesztésű fájlok kizárásával : rg "test" --glob "!*.bak"
  3. Az aktuális mappában lévő összes olyan fájl megkeresése, amely a "hello" karakterláncot tartalmazza, és minden fájl első 2 sorának kiadása: rg "hello" --heading --max-columns=2

A végén érdemes megemlíteni az fzf-et. Ez nem csak egy sztringkereső, mint az ack és a ripgrep. Az fzf egy olyan segédprogram, amely fájlok, mappák és elemek keresésére szolgál egy listában. Egyébként hasonlóan működik, mint az ack/ripgrep, de azzal a kiegészítéssel, hogy az eredményeket élőben is lehet szűrni. Íme néhány példa:

  • F betűvel kezdődő fájlok keresése a számítógépen: locate F | fzf -m
  • Kilépni az aktuális mappából és a kívánt könyvtárba lépni: cd **<TAB> | fzf
  • Válassza ki az SVN revíziót és másolja a számot a vágólapra: svn log | fzf --reverse --ansi | awk '{print $1}' | pbcopy

Remélhetőleg ezek az eszközök segítenek gyorsan és hatékonyan megtalálni a szükséges fájlokat és karakterláncokat. Bármelyiket is választja, mindegyik olyan fejlett keresést kínál, amely jelentősen felgyorsíthatja a munkáját.