find söker filer i GNU/Linux
(Psst, om du inte orkar läsa hela historien kan du skrolla ner till exemplen nedan eller direkt läsa manualsidan för find)
Alldeles nyss tappade min kära mor bort ett viktigt dokument. Hur det försvann förtäljer inte historien. Jag fick reda på att hon skrev i Writer (ordbehandlaren i OpenOffice), hade sparat flera gånger och precis skulle e-posta iväg dokumentet till någon annan. Nu hittade hon det inte där hon hade sparat det. Jag visste också att filen hette Inbjudan till party. I förbifarten nämnde hon att Writer kraschat, men det är egentligen irrelevant eftersom hon sparat flera gånger.
Hur som helst så startade jag min terminal, SSH:ade till hennes dator (mer om SSH en annan gång) och började leta efter filen.
I vanlig ordning får du här lösningen först, så förklarar jag sedan:
find / -xdev -mtime -2 > ~/founds
Jag använde programmet find, som är överlägset när man vill hitta filer, och sökte igenom hela hårddisken. Jag använde flaggan -xdev eftersom jag annars skulle söka även i /proc och andra meningslösa filsystem. -xdev säger åt find att bara söka i det filsystem där man påbörjar sökningen (extra bra om du har en stor NFS-montering som du vill välja bort vid genomsökningen).
Jag sökte efter filer som ändrades för mindre än två dygn sedan. Detta var ett lagom urval den här gången. Jag visste nämligen att mamma inte gör så mycket mer än ordbehandlar på sin dator och därför inte ändrar speciellt många filer. För ett mindre urval, ner på minutnivå, kan du använda flaggan -mmin istället. Byt ut -2 till +2 om du vill hitta filer som ändrats för mer än två dagar sedan.
Slutligen skrev jag resultatet till filen founds i mammas hemkatalog (jag var inloggad som hennes användare).
När find var klar använde jag mig av grep för att plocka ut relevanta rader ur filen:
grep -i inbjudan ~/founds
Resultatet var glädjande:
./home/mamma/.openoffice.org2/user/backup/Inbjudan till party.bak
Writer hade skapat en backup av filen! Jag laddade ner filen till min dator (med hjälp av scp) och öppnade den. Den gick utmärkt att öppna i Writer, så jag kopierade filen till hennes hemkatalog, bytte filändelse till .doc (mamma sparar filer i Word-format, ett format som är uppfunnet av programeringsföretaget Microsoft). Sedan ringde jag upp och hjälpte henne att hitta och öppna filen.
Fler exempel på find
# Sök efter namn (utan hänsyn till versaler/gemener) find -iname '*filnamn*' find -iname '*namn.jpg' # Sök efter stora filer ( > 10 MB) find -size +10M # ... eller små filer (< 10 kB) find -size -10k # Filer ändrade för mer än en månad sedan find -mtime +30 # ... eller ändrade för mindre än 10 minuter sedan find -mmin -10 # ... eller varför inte filer skapade för precis fem minuter sedan? find -cmin 5 # Hitta kataloger/mappar: find -type d # Kombinera två tester: find -type f -mmin -25
Det finns många andra sätt att använda find på. Skumma gärna igenom manualen och lär dig vilka flaggor som finns. Mer mångsidigt sätt att hitta filer på får man leta efter!
Find används till sökningar i Debian, Ubuntu, OpenSuse, Fedora, FreeBSD, Red Hat och i många andra Linux- och Unix-distributioner. Ett annat program du kan kika på, om du vill ha snabbare sökningar, är locate, som dock är begränsat till sökningar på filnamn.
(Den uppmärksamme ser nog att jag hade kunnat använda flaggan -iname till find för att uppnå samma effekt som grep. Anledningen till att jag hellre använde grep var att om det misslyckades så skulle jag kunna skumma igenom filen founds manuellt efter relevanta filer)
