Kommandot find
i Linux är ett mycket kraftfullt verktyg för att söka efter filer och mappar i filsystemet. Här är några grundläggande sätt att använda det:
- Sök efter filer med ett specifikt namn:
find /sökväg/till/mapp -name filnamn
Exempel: find /home/användare -name anteckningar.txt
söker efter en fil med namnet anteckningar.txt
i användarens hemmapp.
- Sök efter filer baserat på filtyp:
find /sökväg/till/mapp -type f
Exempel: find /home -type f
listar alla filer under /home
-katalogen.
- Sök efter mappar:
find /sökväg/till/mapp -type d
Exempel: find /home -type d
listar alla mappar under /home
-katalogen.
- Kombinera
find
med andra kommandon:
Du kan användafind
med andra kommandon med hjälp av-exec
flaggan. Exempel:
find /sökväg/till/mapp -type f -exec grep 'sökt_text' {} \;
Detta söker efter alla filer som innehåller texten ’sökt_text’.
Sök efter filer baserat på filstorlek:
find /sökväg/till/mapp -size +storlek
Exempel: find / -size +1M
söker efter filer som är större än 1 megabyte i hela filsystemet.
Sök efter filer baserat på ändringsdatum:
find /sökväg/till/mapp -mtime -dagar
Exempel: find /home/användare -mtime -10
söker efter filer som ändrades inom de senaste 10 dagarna i användarens hemmapp.
Dessa är bara några exempel på hur du kan använda find
-kommandot. Det finns många andra alternativ och flaggor som gör find
till ett mycket anpassningsbart verktyg för att söka i filsystemet.
Hur hittar en file med viss type
För att hitta filer av en viss typ med find
-kommandot i Linux, använder du -type
-flaggan följt av en bokstav som specifierar filtypen. De vanligaste filtyperna som kan sökas är:
f
för vanliga filerd
för kataloger (mappar)l
för symboliska länkar
Till exempel, för att hitta alla vanliga filer i en specifik katalog och dess underkataloger, kan du använda:
find /sökväg/till/mapp -type f
Om du istället vill hitta alla kataloger, använd:
find /sökväg/till/mapp -type d
Och för att hitta alla symboliska länkar:
find /sökväg/till/mapp -type l
Dessa kommandon listar alla matchningar inom den angivna sökvägen. Du kan också kombinera -type
med andra flaggor och kriterier för att ytterligare begränsa din sökning.
Att kombinera flera alternativ och kriterier i find
-kommandot i Linux är en kraftfull metod för att skräddarsy din fil- och katalogsökning. Här är några exempel på hur du kan göra detta:
Sök efter filer av en viss typ och storlek:
find /sökväg/till/mapp -type f -size +1M
Detta hittar alla vanliga filer (-type f
) som är större än 1 megabyte (-size +1M
) i den angivna katalogen och dess underkataloger.
Sök efter filer baserat på ändringsdatum och filnamn:
find /sökväg/till/mapp -mtime -10 -name "*.txt"
Här söker du efter .txt
-filer (-name "*.txt"
) som ändrades inom de senaste 10 dagarna (-mtime -10
).
Kombinera sökningar med logiska operatorer:
- AND (implicit):
find /sökväg/till/mapp -type f -size +1M -name "*.log"
Detta söker efter alla vanliga filer (-type f
) som är större än 1M och har.log
-ändelsen. - OR:
find /sökväg/till/mapp \( -name "*.txt" -o -name "*.log" \)
Hittar filer som slutar på.txt
eller.log
. - NOT:
find /sökväg/till/mapp -type f ! -name "*.txt"
Hittar alla filer som inte slutar på.txt
.
Använda -exec
för att utföra kommandon på hittade filer:
find /sökväg/till/mapp -type f -name "*.tmp" -exec rm {} \;
Detta söker efter alla .tmp
-filer och tar bort dem.
Kom ihåg att du kan kombinera dessa alternativ och kriterier på olika sätt för att passa dina specifika behov. Användningen av parenteser (\(
och \)
) är viktig när du kombinerar kriterier med OR, och backslash \
används för att undvika att skalet tolkar parenteser och andra specialtecken felaktigt.
Hitta en fil med en viss storlek
För att hitta en fil av en viss storlek med find
-kommandot i Linux, använder du -size
flaggan. Du kan specificera storleken i olika enheter, som block (b), kilobytes (k), megabytes (M), och gigabytes (G). Här är några exempel:
Hitta filer exakt av en specifik storlek:
find /sökväg/till/mapp -type f -size 10M
Detta hittar alla filer som exakt är 10 megabyte stora.
Hitta filer som är större än en viss storlek:
find /sökväg/till/mapp -type f -size +10M
Detta hittar filer som är större än 10 megabyte.
Hitta filer som är mindre än en viss storlek:
find /sökväg/till/mapp -type f -size -10M
Detta hittar filer som är mindre än 10 megabyte.
Kom ihåg att ange rätt sökväg för mappen där du vill börja sökningen. -type f
är valfritt men det hjälper till att begränsa sökningen till endast filer, utesluter mappar och andra typer av innehåll.
Hittar filer baserat på rättigheter
För att hitta filer baserade på deras filrättigheter (även kända som filbehörigheter eller filattribut) i Linux, använder du find
-kommandot tillsammans med -perm
-flaggan. Här är några exempel på hur du kan göra detta:
- Hitta filer med exakta rättigheter:
find /sökväg/till/mapp -type f -perm 0644
Detta kommando söker efter alla filer (-type f
) som har exakta rättigheter 0644 i den angivna katalogen och dess underkataloger. I det här exemplet, 0644
representerar vanliga läs- och skrivrättigheter för ägaren och enbart läsrättigheter för grupp- och andra användare.
- Hitta filer med specifika rättigheter inställda:
- För att hitta filer där alla angivna rättigheter är inställda, använd
-perm -mode
:find /sökväg/till/mapp -type f -perm -u+r
Detta hittar filer som är läsbara av ägaren (u+r
). - För att hitta filer där någon av de angivna rättigheterna är inställda, använd
-perm /mode
:find /sökväg/till/mapp -type f -perm /a+x
Detta hittar filer som är exekverbara av någon (ägare, grupp eller andra).
- Hitta filer med specifika rättigheter inte inställda:
Om du vill hitta filer där vissa rättigheter inte är inställda, kan du använda!
före-perm
:
find /sökväg/till/mapp -type f ! -perm 0777
Detta hittar alla filer som inte har fulla rättigheter (dvs. inte rwxrwxrwx
för ägare, grupp och andra).
Kom ihåg att ersätta /sökväg/till/mapp
med den faktiska sökvägen där du vill söka och anpassa rättighetsvärdet (0644
, u+r
, etc.) efter dina behov. Filrättigheter i Linux är ett komplext ämne, så se till att du förstår filrättigheternas notation innan du använder dessa kommandon.
Kör kommandon på filerna som hitta kommandot hittar
För att köra kommandon på filerna som find
-kommandot hittar, kan du använda -exec
-flaggan i ditt find
-kommando. Detta gör det möjligt att köra nästan vilket kommando som helst på varje fil som matchar dina find
-kriterier. Här är några exempel på hur du kan göra detta:
Ta bort filer:
find /sökväg/till/mapp -type f -name "*.tmp" -exec rm {} \;
Detta hittar alla .tmp
-filer och tar bort dem.
Ändra filrättigheter:
find /sökväg/till/mapp -type f -perm 0644 -exec chmod 0664 {} \;
Detta ändrar rättigheterna för alla filer med rättigheter 0644 till 0664.
Kopiera filer till en annan mapp:
find /sökväg/till/mapp -type f -name "*.jpg" -exec cp {} /sökväg/till/annan/mapp \;
Detta kopierar alla .jpg
-filer till en annan angiven mapp.
Skriva ut innehåll i filer:
find /sökväg/till/mapp -type f -name "*.txt" -exec cat {} \;
Detta skriver ut innehållet i alla .txt
-filer.
I dessa exempel är {}
en platsmarkör för varje fil som hittas av find
. Kommandot efter -exec
utförs för varje sådan fil. \;
i slutet är nödvändigt för att indikera slutet av kommandot som ska köras.
Kom ihåg att vara försiktig när du använder -exec
, speciellt med kommandon som rm
som kan radera filer. Det är alltid en bra idé att först köra find
-kommandot utan -exec
för att se vilka filer som kommer att påverkas.
Manunal sidan för find