Betalingsmetoder Abuse

Søgning i filer efter indhold i Linux: ack og ripgrep

  • Hjem
  • Videnbase
  • Søgning i filer efter indhold i Linux: ack og ripgrep
03.05.2023, 23:33

At bruge filsøgning efter indhold i Linux kan reducere tid og kræfter betydeligt, når man søger efter specifikke oplysninger i store og komplekse filsystemer.

Hvorfor du skal søge efter filer efter indhold

Denne søgning kan være særlig nyttig, når du vil finde filer, der indeholder en bestemt streng eller et bestemt nøgleord, eller når du vil finde alle filer, der matcher et bestemt mønster eller kriterium.

Søgning efter filer efter indhold kan bruges til forskellige opgaver, f.eks. at finde:

  • specifik tekst i store tekstfiler
  • konfigurationsfiler og scripts, der indeholder bestemte indstillinger eller kommandoer
  • filer, der indeholder specifikke data, f.eks. brugernavne eller telefonnumre
  • filer efter indholdstype, som f.eks. at finde alle filer, der indeholder JPEG-billeder eller PDF-dokumenter.

Det generelle formål med at søge i filer efter indhold er at gøre det nemmere at arbejde med filsystemet og finde de oplysninger, du har brug for i filsystemet.

ack

Lad os starte med ack-værktøjet. Det blev skabt i 2005 som et alternativ til grep og blev hurtigt populært blandt udviklere.

Det har flere fordele i forhold til grep, bl.a:

  • smartere fil- og undtagelsessøgninger. Ack søger som standard kun i filer, der kan give mening, f.eks. ved at udelukke .svn- eller .git-mapper. Og du kan tilføje dine egne regler og undtagelser;
  • Ack søger som standard i skjulte filer og mapper;
  • Ack forsøger ikke at søge overalt, selv ikke i systemmapper, som grep. Det betyder, at du nemt kan finde skjulte filer på dit system.

Eksempler på, hvordan man bruger ack:

  • Find alle filer i den aktuelle mappe og dens undermapper, der indeholder ordet "test": ack "test"
  • Det samme, men ekskluderer filer med filtypenavnet .bak: ack "test" --ignore-file=match:/.bak$/
  • Find alle filer i den aktuelle mappe, der indeholder strengen "hello", og udskriv de første to linjer i hver fil: ack "hello" --heading --max-count=2

ripgrep

Det andet interessante værktøj er ripgrep. Det ligner ack på mange måder, men bruger en hurtigere søgealgoritme, hvilket gør det særligt nyttigt til store projekter.

Her er nogle eksempler:

  1. Find alle filer i den aktuelle mappe og dens undermapper, der indeholder ordet "test": rg "test"
  2. Det samme, men ekskluderer filer med filtypenavnet .bak: rg "test" --glob "!*.bak"
  3. Find alle filer i den aktuelle mappe, der indeholder strengen "hello", og udlæs de første 2 linjer i hver fil: rg "hello" --heading --max-columns=2

Til sidst er det værd at nævne fzf. Det er ikke bare en strengfinder som ack og ripgrep. Fzf bruges som et værktøj til at finde filer, mapper og elementer i en liste. Ellers fungerer det på samme måde som ack/ripgrep, men med den ekstra mulighed for at filtrere resultaterne live. Her er nogle eksempler:

  • Søg efter filer, der starter med bogstavet F på din computer: locate F | fzf -m
  • Forlad den aktuelle mappe og gå til den ønskede mappe: cd **<TAB> | fzf
  • Vælg SVN-revisionen, og kopier nummeret til udklipsholderen: svn log | fzf --reverse --ansi | awk '{print $1}' | pbcopy

Forhåbentlig vil disse værktøjer hjælpe dig med at finde de filer og strenge, du har brug for, hurtigt og effektivt. Uanset hvad du vælger, tilbyder de alle avancerede søgninger, der kan fremskynde dit arbejde betydeligt.