logo

Finn kommando i Linux/Unix med eksempler

Find-kommandoen hjelper oss å finne en bestemt fil i en katalog. Den brukes til å finne listen over filer for de forskjellige forholdene som tillatelse, brukereierskap, endring, dato/klokkeslett, størrelse og mer.

I Unix-lignende og andre operativsystemer er finn-kommandoen et kommandolinjeverktøy som finner filer på grunnlag av noen få brukerspesifiserte formater og enten skriver ut alle samsvarende objekts banenavn eller, hvis andre handlinger blir bedt om, implementerer handlingen på alle samsvarende objekter.

Den starter et søk fra et ønsket sted å starte, og deretter krysser den rekursivt katalogene (nodene) til en hierarkisk struktur (vanligvis et tre). Finn-kommandoen kan søke og krysse fra forskjellige filpartisjonssystemer som tilhører en enkelt eller flere lagringsenheter under startkatalogen.

Søkeformatet inneholder et mønster for matching mot filnavnet eller tidsintervallet for samsvar mot endringstiden eller filtilgangstiden. Finn-kommandoen gir som standard en liste over hver fil under gjeldende arbeidskatalog. Imidlertid kan brukere begrense søket til et ønsket maksimalt nivå på startkatalogen.

De tilknyttede lokaliseringsprogrammene bruker en indeksert fildatabase hentet fra fine-kommandoen for å gi en raskere teknikk for å søke i hele filsystemet etter navn.

Finn-verktøyet kommer som standard med de fleste Linux distros , så vi trenger ikke å installere noen ekstra pakke. Det er en av de mest essensielle og brukte kommandoene til Linux system.

 find 

De to alternativene bestemmer hvordan funn skal vurdere symbolske lenker. Standardnaturen er aldri å forfølge symbolske lenker. Flagget, dvs. -L , vil lede finne å forfølge symbolske lenker. Flagget, dvs. -H , vil bare forfølge symbolske lenker mens du fortsetter med kommandolinjeargumentene. Flaggene er nevnt i POSIX-standarden for find-kommandoen. En grunnleggende utvidelse er et flagg, dvs. -P , for å eksplisitt deaktivere den følgende symbolkoblingen.

Minst en sti må forutse uttrykket. Finn-kommandoen kan internt tolke jokertegn, og kommandoer må siteres nøye for å håndtere shell-globing.

Uttrykkskomponenter er isolert av kommandolinjeargumentgrensen, vanligvis angitt som mellomrom innenfor skallsyntaksen. De betraktes fra venstre side til høyre side. De kan inkludere logiske komponenter som OR og AND samt predikater (handlinger og filtre). GNU-funnet inneholder flere andre funksjoner som ikke er nevnt av POSIX.

Følgende symboler brukes til å spesifisere katalogen:

(.) : For gjeldende katalognavn

(/) : For rotkatalogen

Kort historie om finnekommandoen

Finn-kommandoen skjedde i versjon 5 Unix som et element i Programmerers arbeidsbenk prosjekt og ble spesifisert av Dick Haight med cpio, som ble utviklet for å kunne brukes sammen.

Opprinnelig ble GNU-implementeringen av find-kommandoen spesifisert av Eric Decker . Senere ble den utviklet av David MacKenzie, Tim Wood , og Jay Plett . Finn-kommandoen har også blitt portert til IBM i OS.

kruskal algoritme

Predikater

Mye brukte primærvalg er:

    -navn mønster:Den sjekker at filnavnet er det samme som det gitte shell-glob-mønsteret eller ikke.-type type:Den sjekker at filen er en oppgitt type.-skrive ut:Det gir alltid den sanne verdien. Den skriver ut gjeldende filnavn og en ny linje til standard.-print0:Det gir alltid den sanne verdien. Den skriver ut det gjeldende filnavnet og et nulltegn til stdout. Ikke nødvendig av POSIX.-exec-program [argument ...];:Det gir alltid den sanne verdien. Den kjører et program med de faste gitte argumentene og gjeldende filbane.-exec-program [argument ...] { } +:Det gir alltid den sanne verdien. Den kjører et program med de faste gitte argumentene og så flere stier som mulig. For nesten hver implementering betyr andre {}-forekomster ekstra kopier av det gitte navnet (aspektet er ikke nødvendig av POSIX).-ok program [argument ...];:Det er det samme som -exec, men vil returnere false eller true hvis programmet gir 0.

Finn standarder for å implementere -print i tilfelle betingelsene er sanne hvis uttrykket ikke bruker noen av -ok, -exec, -print eller -print0.

Operatører

Operatører forbedrer finn-kommandouttrykkene. De er nevnt i rekkefølge etter synkende prioritet:

    (uttr):Denne operatøren kan fremtvinge forrang.! expr:Hvis expr returnerer usant, returnerer det sant.
  • expr1 expr2 (eller expr1 -a expr2 : OG. expr2 blir ikke evaluert hvis expr1 er usann.
  • expr1 -o expr2 : ELLER. expr2 blir ikke evaluert hvis expr1 er sant.

Eksempler på finn-kommandoen

La oss se følgende eksempler på find-kommandoen:

Finn filer etter navn

Vi kan søke i alle filene som slutter med filtypen .txt. For å gjøre det, kjør kommandoen nedenfor:

 find . -name '*.txt' 

Kommandoen ovenfor vil vise alle tekstfilene fra gjeldende arbeidskatalog. Tenk på utgangen nedenfor:

Finn Linux

Fra utdataene ovenfor er alle filene med filtypen '.txt' oppført med find-kommandoen.

Finne filer etter type

Parameteren '-type' brukes til å spesifisere filtypen.

amplitudemodulasjon

Noen av filtypene er som følger:

  • f: vanlig fil
  • d: katalog
  • l: symbolske lenker
  • c: tegnenheter
  • b: blokkere enheter

Tenk på kommandoen nedenfor:

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

Kommandoen ovenfor vil vise alle katalogene som har utvidelsen '.bak'. Tenk på utgangen nedenfor:

Finn Linux

Fra utgangen ovenfor, kommandoen 'finn . -type d -navn '*.bak' viser alle katalogene som slutter med '.bak'.

Finn nyere filer

Parameteren '-newer' hjelper deg med å søke etter filene som er nyere enn den nevnte filen. Tenk på kommandoen nedenfor:

 find . -newer msg.txt 

Kommandoen ovenfor vil vise alle filene som er nyere enn 'msg.txt' fra gjeldende arbeidskatalog. Tenk på utgangen nedenfor:

Finn Linux

Fra utdataene ovenfor er alle filene som vises nyere enn 'msg.txt'-filen.

Finn og slett en fil

Alternativet '-delete' brukes til å slette en bestemt fil. Vi må være veldig forsiktige når vi bruker denne kommandoen fordi det ikke er noe angrealternativ hvis den er utført en gang. Tenk på kommandoen nedenfor:

 find . -name Demo.txt -delete 

Kommandoen ovenfor vil slette filen 'Demo.txt' fra gjeldende arbeidskatalog. Tenk på utgangen nedenfor:

Finn Linux

Finn en katalog

Alternativet 'type -d' brukes til å finne en katalog. Tenk på kommandoen nedenfor:

 find . type -depth -name Newdirectory 

Kommandoen ovenfor vil finne 'Newdirectory'-plasseringen. Tenk på utgangen nedenfor:

Finn Linux

Finn filer etter endringstid

Alternativet '-mtime', etterfulgt av antall dager, brukes til å finne filene ved modifikasjon. Antall dager kan være positivt eller negativt. Den negative verdien vil bli brukt for mindre enn -1 brukes for den siste dagen, og på samme måte vil +1 finne filen for mer enn én dag siden. Tenk på kommandoen nedenfor:

 find ./Newdirectory -mtime -1 

Kommandoen ovenfor vil finne filene som er endret i løpet av den siste dagen. Tenk på utgangen nedenfor:

betinget operatør i java
Finn Linux

Finn filer med tillatelse

Alternativet '-perm' brukes til å finne filer med tillatelse. Utfør finn-kommandoen med '-perm'-alternativet og send den nødvendige verdien. Tenk på kommandoen nedenfor:

 find ./ -perm 777 

Kommandoen ovenfor vil vise filene fra den angitte katalogen som alle kan lese, skrive og kjøre.

Finn og erstatt filer

For å finne og erstatte filer, må vi kombinere find-kommandoen med sed-kommandoen. For å operere på filer, bruk '-exec'-alternativet med find-kommandoen. Tenk på kommandoen nedenfor:

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

fra kommandoen ovenfor, vil den angitte forekomsten erstattes. Tenk på utgangen nedenfor:

Finn Linux

Finn tekst i flere filer

Vi kan lage en annen kombinasjon av find-kommandoen med grep-kommandoen for å finne teksten fra de ulike filene. Tenk på kommandoen nedenfor:

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

Kommandoen ovenfor vil finne linjene som inneholder teksten 'demo' fra alle tekstfilene i katalogen 'Newdirectory'. Tenk på utgangen nedenfor:

Finn Linux

Fra utgangen ovenfor kan vi se linjene med teksten 'demo' har blitt vist.

Søk i hver katalog

 $ find / -name file1 -type f -print 

Kommandoen ovenfor finner alle kataloger for en vanlig fil med tittelen fil1 og skriver den ut på skjermen. Generelt er det ikke en god idé å søke etter filer på denne måten. Det kan ta en god del tid. Så det er best å nevne katalogen. Noen få operativsystemer kan montere filsystemer (dynamisk) som ikke er gunstige for find-kommandoen. Mer kompliserte filnavn som inneholder tegn som er unike for skallet, kan kreve å lukkes i enkle anførselstegn.