Betalningsmetoder Abuse

Söka filer efter innehåll i Linux: ack och ripgrep

03.05.2023, 23:33

Att använda filsökning efter innehåll i Linux kan avsevärt minska tid och ansträngning när du söker efter specifik information i stora och komplexa filsystem.

Varför du behöver söka efter filer efter innehåll

Denna sökning kan vara särskilt användbar när du vill hitta filer som innehåller en viss sträng eller ett visst nyckelord, eller när du vill hitta alla filer som matchar ett visst mönster eller kriterium.

Att söka efter filer efter innehåll kan användas för olika uppgifter, t.ex. för att hitta:

  • specifik text i stora textfiler
  • konfigurationsfiler och skript som innehåller vissa inställningar eller kommandon
  • filer som innehåller specifika data, t.ex. användarnamn eller telefonnummer
  • filer efter innehållstyp, t.ex. att hitta alla filer som innehåller JPEG-bilder eller PDF-dokument.

Det allmänna syftet med att söka filer efter innehåll är att göra det enklare att arbeta med filsystemet och hitta den information du behöver i filsystemet.

Ack

Låt oss börja med verktyget ack. Det skapades 2005 som ett alternativ till grep och blev snabbt populärt bland utvecklare.

Det har flera fördelar jämfört med grep, bland annat:

  • smartare fil- och undantagssökningar. Ack söker som standard bara i filer som kan vara vettiga, till exempel genom att utesluta .svn- eller .git-mappar. Och du kan lägga till egna regler och undantag;
  • Ack söker som standard i dolda filer och kataloger;
  • Ack försöker inte söka överallt, inte ens i systemmappar, som grep. Detta innebär att du enkelt kan hitta filer som är dolda på ditt system.

Exempel på hur du kan använda ack:

  • Hitta alla filer i den aktuella mappen och dess undermappar som innehåller ordet "test": ack "test"
  • Samma sak, men exkluderar filer med filnamnstillägget .bak: ack "test" --ignore-file=match:/.bak$/
  • Hitta alla filer i den aktuella mappen som innehåller strängen "hello" och skriv ut de 2 första raderna i varje fil: ack "hello" --heading --max-count=2

ripgrep

Det andra intressanta verktyget är ripgrep. Det liknar ack på många sätt, men använder en snabbare sökalgoritm, vilket gör det särskilt användbart för stora projekt.

Här är några exempel:

  1. Hitta alla filer i den aktuella mappen och dess undermappar som innehåller ordet "test": rg "test"
  2. Samma sak, men med undantag för filer med filnamnstillägget .bak: rg "test" --glob "!*.bak"
  3. Hitta alla filer i den aktuella mappen som innehåller strängen "hello" och skriv ut de första 2 raderna i varje fil: rg "hello" --heading --max-columns=2

I slutet är det värt att nämna fzf. Det är inte bara en strängfinnare som ack och ripgrep. Fzf används som ett verktyg för att hitta filer, mappar och objekt i en lista. Annars fungerar det på samma sätt som ack / ripgrep, men med den extra möjligheten att filtrera resultaten live. Här är några exempel:

  • Sök efter filer som börjar på bokstaven F på din dator: locate F | fzf -m
  • Avsluta den aktuella mappen och gå till den katalog jag vill ha: cd **<TAB> | fzf
  • Välj SVN-revision och kopiera numret till urklipp: svn log | fzf --reverse --ansi | awk '{print $1}' | pbcopy

Förhoppningsvis kan dessa verktyg hjälpa dig att hitta de filer och strängar du behöver snabbt och effektivt. Oavsett vilket du väljer erbjuder de alla avancerade sökningar som kan påskynda ditt arbete avsevärt.