Praktisk användning av find i Linux

Från Wiki.linux.se -Linux wikipedia på Svenska.
Version från den 28 mars 2026 kl. 07.13 av Admin (diskussion | bidrag) (→‎Sidslut)
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

Praktisk användning av find i Linux

Ingress

Kommandot find(1) är ett kraftfullt verktyg för att söka efter filer och kataloger i Linux baserat på olika kriterier. Det används ofta för filhantering, automatisering och systemadministration, och kan kombineras med andra verktyg som grep(1), xargs(1) och rm(1).

Denna artikel visar praktiska och verklighetsnära exempel på hur find(1) används i olika situationer.

Hur find fungerar

Grundsyntaxen för find(1) är:

find [sökväg] [villkor] [åtgärd]

Exempel:

find . -name "fil.txt"

Detta söker efter filen *fil.txt* i aktuell katalog och alla underkataloger.

Söka efter filer

Sök efter en specifik fil:

find /home -name "rapport.txt"

Sök efter alla `.log`-filer:

find . -name "*.log"

Skilja på stora och små bokstäver

För skiftlägesokänslig sökning används:

find . -iname "*.txt"

Söka efter kataloger

För att hitta kataloger istället för filer:

find . -type d -name "backup"

Vanliga typer:

  • `-type f` – filer
  • `-type d` – kataloger

Söka baserat på storlek

Hitta filer större än 100 MB:

find . -size +100M

Hitta filer mindre än 1 KB:

find . -size -1k

Söka baserat på tid

Filer ändrade senaste 7 dagarna:

find . -mtime -7

Filer som inte ändrats på 30 dagar:

find . -mtime +30

Utföra kommandon på resultat

En av de mest kraftfulla funktionerna är `-exec`.

Ta bort alla `.tmp`-filer:

find . -name "*.tmp" -exec rm {} \;

Eller med xargs(1) (snabbare för många filer):

find . -name "*.tmp" | xargs rm

Praktiskt exempel: rensa gamla filer

Ta bort loggfiler äldre än 30 dagar:

find /var/log -name "*.log" -mtime +30 -exec rm {} \;

Praktiskt exempel: ändra rättigheter

Ändra rättigheter på alla `.sh`-filer:

find . -name "*.sh" -exec chmod +x {} \;

Praktiskt exempel: söka innehåll

Kombinera med grep(1):

find . -name "*.txt" -exec grep "fel" {} \;

Detta söker efter texten "fel" i alla `.txt`-filer.

Undvika kataloger

För att exkludera kataloger:

find . -path "./node_modules" -prune -o -name "*.js" -print

Alternativ metod

I enklare fall kan locate(1) användas:

locate fil.txt

Skillnaden är att locate(1):

  • är mycket snabbare
  • använder en databas
  • inte alltid visar aktuella filer

När ska man använda find?

find(1) är särskilt användbart när man behöver:

  • söka efter filer baserat på avancerade kriterier
  • automatisera filhantering
  • analysera filsystem
  • kombinera med andra verktyg i pipelines

Sammanfattning

find(1) är ett av de mest flexibla och kraftfulla verktygen i Linux. Med sina många flaggor och möjligheten att köra kommandon direkt på resultatet är det oumbärligt för systemadministration och skriptning.

SE ÄVEN

find(1), grep(1), xargs(1), locate(1), rm(1)

Sidslut

Det här är AI-genererat innehåll.

Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på: https://www.linux.se/kontakta-linux-se/

Besök vår systersida GeekToys.se där vi publicerar artiklar om datorer genom åren. Du hittar alla artiklar som finns på GeekToys på: https://geektoys.se/links/