logo

Hitta kommando i Linux/Unix med exempel

Find kommandot hjälper oss att hitta en viss fil i en katalog. Den används för att hitta listan över filer för olika villkor som tillstånd, användarägande, ändring, datum/tid, storlek och mer.

I Unix-liknande och andra operativsystem är kommandot find ett kommandoradsverktyg som hittar filer på basis av ett fåtal användarspecificerade format och antingen skriver ut alla matchade objekts sökväg eller, om andra åtgärder efterfrågas, implementerar den åtgärden på alla matchade objekt.

Den startar en sökning från en önskad startplats och korsar därefter rekursivt katalogerna (noderna) i en hierarkisk struktur (vanligtvis ett träd). Find-kommandot kan söka och gå från olika filpartitionssystem som tillhör en eller flera lagringsenheter under startkatalogen.

Sökformatet innehåller ett mönster för matchning mot filnamnet eller tidsintervallet för matchning mot ändringstiden eller filåtkomsttiden. Kommandot find ger som standard en lista över alla filer i den aktuella arbetskatalogen. Användare kan dock begränsa sökningen till en önskad maxnivå vid startkatalogen.

De associerade lokaliseringsprogrammen använder en indexerad fildatabas som erhålls från kommandot fine för att ge en snabbare teknik för att söka i hela filsystemet efter namn.

Sökverktyget kommer som standard med de flesta av Linux distros , så vi behöver inte installera något extra paket. Det är ett av de mest väsentliga och använda kommandona i Linux systemet.

 find 

De två alternativen bestämmer hur find ska överväga symboliska länkar. Standardnaturen är att aldrig följa symboliska länkar. Flaggan, dvs. -L , kommer att leda till att söka efter symboliska länkar. Flaggan, dvs. -H , kommer bara att följa symboliska länkar medan du fortsätter med kommandoradsargumenten. Flaggorna nämns i POSIX-standarden för find-kommandot. En grundläggande förlängning är en flagga, dvs. -P , för att uttryckligen inaktivera följande symbollänk.

Åtminstone en väg måste föregripa uttrycket. Find-kommandot kan internt tolka jokertecken, och kommandon måste noggrant citeras för att hantera skalglobing.

Uttryckskomponenter isoleras av kommandoradens argumentgräns, vanligtvis indikerad som blanksteg inom skalsyntaxen. De betraktas från vänster sida till höger sida. De kan inkludera logiska komponenter som ELLER och OCH samt predikat (åtgärder och filter). GNU-fynd innehåller flera andra funktioner som inte nämns av POSIX.

Följande symboler används för att ange katalogen:

(.) : För aktuellt katalognamn

(/) : För rotkatalogen

Kort historik om sökkommandot

Find-kommandot inträffade i version 5 Unix som ett element i Programmerarens arbetsbänk projekt och specificerades av Dick Haight med cpio, som utvecklats för att användas tillsammans.

Ursprungligen specificerades GNU-implementeringen av find-kommandot av Eric Decker . Senare utvecklades den av David MacKenzie, Tim Wood , och Jay Plett . Dessutom har find-kommandot porterats till IBM i OS.

infoga vattenstämpel i word

Predikat

Ofta använda primärprodukter är:

    -namnmönster:Den kontrollerar att filnamnet är detsamma som det givna skal-glob-mönstret eller inte.-typ typ:Den kontrollerar att filen är en angiven typ.-skriva ut:Det ger alltid det verkliga värdet. Den skriver ut det aktuella filnamnet och en ny rad till stdout.-print0:Det ger alltid det verkliga värdet. Den skriver ut det aktuella filnamnet och ett nolltecken till stdout. Behövs inte av POSIX.-exec-program [argument ...];:Det ger alltid det verkliga värdet. Den kör ett program med de fasta givna argumenten och den aktuella filsökvägen.-exec-program [argument ...] { } +:Det ger alltid det verkliga värdet. Den kör ett program med de fasta givna argumenten och så flera vägar som möjligt. För nästan varje implementering betyder andra {}-förekomster extra kopior av förnamnet (aspekten behövs inte av POSIX).-ok program [argument ...];:Det är samma som -exec, men kommer att returnera false eller true om programmet ger 0.

Hitta standardinställningar för att implementera -print om villkoren är sanna om uttrycket inte använder någon av -ok, -exec, -print eller -print0.

Operatörer

Operatörer förbättrar uttrycken för find-kommandot. De nämns i fallande ordning:

    (uttryck):Denna operatör kan tvinga fram företräde.! expr:Om expr returnerar falskt returnerar det sant.
  • expr1 expr2 (eller expr1 -a expr2 : AND. expr2 utvärderas inte om expr1 är falskt.
  • expr1 -o expr2 : ELLER. expr2 utvärderas inte om expr1 är sant.

Exempel på kommandot hitta

Låt oss se följande exempel på kommandot find:

Hitta filer efter namn

Vi kan söka i alla filer som slutar med tillägget '.txt'. För att göra det, kör följande kommando:

 find . -name '*.txt' 

Kommandot ovan kommer att lista alla textfiler från den aktuella arbetskatalogen. Tänk på följande utdata:

vad är myspace
Hitta Linux

Från ovanstående utdata listas alla filer som har tillägget '.txt' med kommandot find.

Hitta filer efter typ

Parametern '-type' används för att specificera filtypen.

Några av filtyperna är följande:

  • f: vanlig fil
  • d: katalog
  • l: symboliska länkar
  • c: teckenenheter
  • b: blockera enheter

Tänk på kommandot nedan:

 find . -type d -name '*.bak' 

Kommandot ovan kommer att lista alla kataloger som har tillägget '.bak'. Tänk på följande utdata:

Hitta Linux

Från ovanstående utdata, kommandot 'find . -typ d -namn '*.bak' visar alla kataloger som slutar med '.bak'.

Hitta nyare filer

Parametern '-newer' hjälper till att söka efter filer som är nyare än den nämnda filen. Tänk på kommandot nedan:

 find . -newer msg.txt 

Kommandot ovan kommer att visa alla filer som är nyare än 'msg.txt' från den aktuella arbetskatalogen. Tänk på följande utdata:

Hitta Linux

Från ovanstående utdata är alla filer som visas nyare än 'msg.txt'-filen.

Hitta och ta bort en fil

Alternativet '-delete' används för att ta bort en specifik fil. Vi måste vara mycket försiktiga när vi använder det här kommandot eftersom det inte finns något ångraalternativ om det en gång körs. Tänk på kommandot nedan:

 find . -name Demo.txt -delete 

Ovanstående kommando tar bort filen 'Demo.txt' från den aktuella arbetskatalogen. Tänk på följande utdata:

Hitta Linux

Hitta en katalog

Alternativet 'typ -d' används för att hitta en katalog. Tänk på kommandot nedan:

 find . type -depth -name Newdirectory 

Ovanstående kommando kommer att hitta platsen för 'Nykatalog'. Tänk på följande utdata:

hur man kontrollerar skärmstorleken
Hitta Linux

Hitta filer efter ändringstid

Alternativet '-mtime', följt av antalet dagar, används för att hitta filerna genom modifiering. Antalet dagar kan vara positivt eller negativt. Det negativa värdet kommer att användas för mindre än som -1 används för den sista dagen, och på samma sätt kommer +1 att hitta filen för mer än en dag sedan. Tänk på kommandot nedan:

 find ./Newdirectory -mtime -1 

Ovanstående kommando hittar filerna som har ändrats under den senaste dagen. Tänk på följande utdata:

Hitta Linux

Hitta filer med tillstånd

Alternativet '-perm' används för att hitta filer med tillstånd. Utför find-kommandot med alternativet '-perm' och skicka det önskade värdet. Tänk på kommandot nedan:

 find ./ -perm 777 

Kommandot ovan kommer att lista filerna från den angivna katalogen som alla kan läsa, skriva och köra.

Hitta och ersätt filer

För att hitta och ersätta filer måste vi kombinera find-kommandot med sed-kommandot. För att arbeta med filer, använd alternativet '-exec' med kommandot find. Tänk på kommandot nedan:

 find ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} ; 

från kommandot ovan kommer den angivna förekomsten att ersättas. Tänk på följande utdata:

Hitta Linux

Hitta text i flera filer

Vi kan göra en annan kombination av kommandot find med kommandot grep för att hitta texten från de olika filerna. Tänk på kommandot nedan:

 find ./Newdirectory -type f -name '*.txt' -exec grep 'demo' {} ; 

Ovanstående kommando kommer att hitta raderna som innehåller texten 'demo' från alla textfiler i katalogen 'Newdirectory'. Tänk på följande utdata:

Hitta Linux

Från ovanstående utdata kan vi se raderna med texten 'demo' har visats.

Sök i varje katalog

 $ find / -name file1 -type f -print 

Ovanstående kommando hittar alla kataloger för en vanlig fil vars titel är fil1 och skriver ut den på skärmen. I allmänhet är det inte en bra idé att söka efter filer på det här sättet. Det kan ta en bra tid. Så det är bäst att nämna katalogen. Ett fåtal operativsystem kan montera filsystem (dynamiska) som inte är gynnsamma för find-kommandot. Mer komplicerade filnamn som innehåller tecken som är unika för skalet kan behöva stängas med enstaka citattecken.