Kommandot find i Linux används för att söka efter filer och kataloger i angivna kataloger baserat på olika kriterier. Detta kommando är ett av de mest kraftfulla och utbredda verktygen i Linux.
Det grundläggande formatet för kommandot find är följande:
find [path] [expression]
där:
path
är sökvägen till den katalog där du vill söka efter filer (som standard söker find i den aktuella katalogen och alla dess underkataloger);
expression
är ett uttryck som definierar kriterierna för att söka efter filer.
Följande är några av de vanligaste kriterierna för filsökning som kan användas i ett uttryck för kommandot find:
-name
: Sök efter filer efter namn. Till exempel: -type:
find /home/user -name myfile.txt
-type
: Sök efter filer av en viss typ (t.ex. f
för vanliga filer eller d
för kataloger). Exempel: -type
find /home/user -type f
-size
: Sök efter filer efter storlek. Exempel: -mtime
find /home/user -size +10M
-mtime
: Sök efter filer efter senaste ändringstid. Exempel: -user
find /home/user -mtime -7
-user
och -group
: Sök efter filer efter ägare och grupp. Exempel: -user
find /home/user -user bob -group users
Du kan använda de logiska operatorerna -and
, -or
och -not
för att kombinera flera sökkriterier till ett enda uttryck.
Följande kommando söker t.ex. efter alla filer i katalogen /home/user
som har ändrats under de senaste 7 dagarna och som är större än 10 megabyte:
find /home/user -type f -mtime -7 -size +10M
Med kommandot find kan du också utföra olika åtgärder på de filer som hittas med hjälp av alternativet -exec
. Du kan t.ex. ta bort alla filer som ändrades för mer än 30 dagar sedan med följande kommando:
find /home/user -type f -mtime +30 -exec rm {} ;
Här kör alternativet -exec
kommandot rm
för varje fil som hittas och använder {}
för att ersätta filnamnet i kommandot.
Kommandot find
är ett kraftfullt verktyg för att hitta filer och kataloger i Linux, som kan användas för att utföra olika förvaltningsrelaterade uppgifter.
Kommandot find
har stöd för många andra alternativ som kan användas för att hitta filer på ett mer exakt sätt:
-iname
: Sök efter filer med namn utan hänsyn till skiftlägesbokstäver. Exempelvis
find /home/user -iname myfile.txt
-regex
: Sök efter filer vars namn matchar ett givet reguljärt uttryck. Till exempel: -regex:
find /home/user -regex ".*.txt$"
-maxdepth
och -mindepth
: begränsar djupet på sökningen efter filer i underkataloger. Exempel: -maxdepth
find /home/user -maxdepth 2 -type f
-prune
: utesluter vissa kataloger från sökningen. Exempel: -prune:
find /home/user -path /home/user/excluded -prune -o -type f -print
-print
: matar ut listan över hittade filer till standardutmatningen. Exempel: -print
find /home/user -type f -print
find
stöder även sökning av filer med hjälp av olika attribut, t.ex. behörigheter, filattribut, SELinux-etiketter
och andra. Mer information om dessa alternativ finns i dokumentationen för kommandot find
.
Kommandot kan söka efter filer och kataloger i hela filsystemet, vilket kan ta mycket tid och resurser i anspråk. Därför är det viktigt att vara försiktig när kommandot används och se till att sökkriterierna är korrekt inställda för att undvika att hitta onödiga filer eller fel i systemet.