Søg og du skal finde

Artikel

Linux har i kommandolinien indbygget stærke søgeredskaber, der sætter dig i stand til at finde filer på dine diske.

Find
Den mest oplagte søgemetode er find. Den bruges i al sin enkelthed således:
#> find ~ -name "firefox"
Ovenstående leder den aktuelle brugers hjemmefolder og alle underbiblioteker igennem efter filer med navnet firefox.

Søger man i systembiblioteker, bør man være logget ind som root, da man ellers får man en masse linier med advarsler om, at man ikke har ret til at lede i den og den folder.
Søgningen er case-følsom, så eksempelvis vil en fil med navnet MinFil ikke blive fundet. Det kan ændres ved at erstatte -name med -iname (i for ignore case)

#> find ~ -iname "firefox"

Wildchars
Man kan naturligvis også bruge wildchars
#> find /usr/ -name "*.bin"
Ovenstående finder f.eks. alle filer der ender på *.bin
 
Størrelse
Man kan også finde filer efter størrelse med find
#> find / -size +20M 
Her finder man alle filer, der er større end 20 MB. Det kan være nyttigt , når man leder efter pladsslugere. 
 
Kombinationer 
Man kan kombinere søgekriterier med AND, OR og NOT operatorer. Således vil nedenstående finde alle filer der ender på .c, eller .txt.
#> find / -name "*.txt" -or -name "*.c"
 
Ejer- og gruppesøgning
Man kan også søge på filer ud med udgangspunkt i ejerforhold.
#> find / -user ole -and -name "*.txt"
finder alle brugeren ole's filer der ender på *.txt
#> find / -group www-data -and -name "*.php"
finder alle .php filer, der er ejet af brugere i gruppen www-data (Apaches standard web-gruppe)
 
Find er et meget stærkt værktøj. Det kan meget mere end illustreret her. Man kan søge efter tidspunkt for redigering, eller oprettelse, man kan bruge kommandoen til at omdøbe filer med -exec, eller -ok parameteret o.m.a. brug Man find, og Google for at finde ud af mere.
 
Andre søgemuligheder.
whereis: Denne kommando finder placeringerne af alle binære filer, manualsider og sourcefiler der tilhører et bestemt program. 
Hvis du søger med whereis  efter f.eks. libreoffice, eller soffice får du flere (mange) svar - det kan være ganske uoverskueligt. Du kan begrænse svarene ved at bruge -b (for kun binary) -m (kun manualsider), eller -s (for kildefiler)
which: Skal du finde placeringen af den eksekverbare fil, der kaldes, når du skriver navnet i en termina, er which, klart den simpleste kommando. Den finder udelukkende stien til den eksekverbare fil der anvedes af systemet. Har du flere versioner af det samme program installeret, finder which kun stien til den aktive version.
Forskellen på whereis og which
 
Locate er en anden måde at finde filer på, der bruger indekseret søgning. Indekseret søgning betyder, at der eksisterer en database, der indeholder oplysninger om alle filerne på disken. Databasen opdateres dagligt (som regel automatisk) . Alternativt kan man selv oprette/opdatere databasen med kommandoen updatedb.
#> locate *.php
finder alle filer med navne, der ender på .php.
#> locate -c *.php
finder det samme som forrige søgning, men returner kun det totale antal filer, der opfylder kriterierne
 
locate rummer mange andre muligheder end de viste. Brug man locate for at få mere viden. 
locate er lynhurtig, men ulmpen er, at den bruger en database, som altid viser et "historisk" aftryk af disken. Bruger man updatedb før søgning, vil det sjældent være et problem. Skal man i gang med større søgeprojekter med mange søgninger, vil det helt klart være en fordel at bruge locate frem for find. find er mere oplagt, når man hurtigt skal lave enkelte søgninger, eller når søgningerne bliver mere komplekse og man f.eks. ønsker at udføre handlinger på de fundne filer. 

 

kategori: