40 beste eksempler på Finn-kommando i Linux

Linux find-kommandoen er et kraftig verktøy som gjør det mulig for systemadministratorer å finne og administrere filer og kataloger basert på et bredt spekter av søkekriterier. Den kan finne kataloger og filer etter navn, type eller utvidelse, størrelse, tillatelser, etc.

I tillegg til å finne filer og kataloger, kan du kombinere finn-kommandoen med andre, for å gjøre noe med resultatene. Å legge til -exec-alternativet gjør det mulig for systemadministratorer å kjøre eksterne kommandoer og utføre handlinger som å kopiere, flytte, slette eller endre tillatelser for filene som samsvarer med de angitte kriteriene som størrelse, navn, etc.

I denne artikkelen vil vi starte med å forklare de grunnleggende Linux-finnkommandoer med eksempler. Dette vil vise deg hvordan du finner filer og kataloger. Vi vil da vise deg hvordan du bruker -exec-alternativet til å handle på filene eller katalogene basert på deres størrelse, tillatelser osv.

Den generelle syntaksen for find-kommandoen er

find {path} {name -of-file or dir-to-search} {action-to-take}

Hvor,

  • bane angir katalogen.
  • navn på fil eller dir-til-søk : Navnet på filen eller katalogen du skal se etter
  • handling å ta: for eksempel kopiere, slette, flytte osv.

I denne opplæringen vil vi forklare hvordan du finner filer og kataloger som samsvarer med spesifiserte mønstre. Vi vil også se hvordan du utfører handlinger på filene eller katalogene som find-kommandoen finner. Veiledningen er basert på Ubuntu, men gjelder for de fleste Linux-distribusjoner og -versjoner.

Innholdsfortegnelse

Finn filer og kataloger

Finn bestemte filer etter navn eller filtype

For å se etter en bestemt fil, kjør følgende kommando fra roten (/). Kommandoen inneholder det nøyaktige navnet på filen du søker etter.

find . -name file22.txt

Produksjon

./test/file22.txt
./sales/file22.txt

Vær oppmerksom på at resultatene inkluderer banen. Dette er viktig hvis du ikke kjenner katalogen der filen ligger, eller når den er på mer enn ett sted.

Du kan også søke etter filen i en annen katalog mens du fortsatt er på gjeldende plassering. I dette tilfellet må du oppgi banen til katalogen der du vil søke.

find ./test -name file22.txt

Ser etter spesifikke filer i en annen katalog

I vårt tilfelle vil vi se etter alle de som begynner med bokstavfilen i testkatalogen.

find ./test -name file*

Produksjon

./test/file22.txt
./test/file30.doc
./test/file1.txt
./test/file5,doc

Søk etter filer etter utvidelse

For å finne en fil i Linux med en viss utvidelse, legg den til i kommandoen.

find . -name *.txt

Produksjon

./test/subtest/subfil.txt
./test/file22.txt
./test/file1.txt
./home1/files32.txt
./home2/file22.txt
./qa/tags.txt

Finn filer og kataloger etter navn

Bruk kommandoen nedenfor for å se etter filer og kataloger som begynner med bokstavene qa. På datamaskinen vår har vi filene qatree.txt og qa.txt samt en katalog med navnet qa.

  Hvordan spille Geometry Dash på Linux

Hvis vi kjører kommandoen;

find ./ -name "qa*"

Den returnerer følgende utgang

./test/qatree.pdf
./test/qa.txt
./home/qa

Kommandoen returnerer både filene og katalogene som samsvarer med søkekriteriene. For kun å finne filer eller kataloger, må du spesifisere dette i kommandoen.

Finn kun filer eller kataloger

Bare for filer, bruk type f-bryteren.

Kun filer

find ./ -type f -name "qa*"

Produksjon

./test/qatree.pdf
./test/qa.txt

Bare kataloger

Legg til alternativet type d for kun å finne kataloger.

find ./ -type d -name "qa*"

Produksjon

./home/qa

Finnkommando som ikke skiller mellom store og små bokstaver

Alle søk med -navn-bryter skiller mellom store og små bokstaver og vil ikke gi resultater med store bokstaver. For å få alle saker, bruk -iname-alternativet.

find ./ -iname "qa*"

Produksjon

./test/qatree.pdf
./test/qa.txt
./test/QAtest.txt
./home/qa

Søk etter en fil fra flere kataloger

For å finne filene i forskjellige kataloger, legg til banene deres i kommandoen. I vårt tilfelle vil vi sjekke inn test- og numeriske kataloger.

find ./test ./numeric -name file22.txt -type f

Produksjon

./test/file22.txt
/root/numeric/file22.txt

Finn flere filer med forskjellige utvidelser fra alle kataloger

Du kan bruke finn-kommandoen til å finne flere filer som deler de forskjellige filtypene som *.doc, *.txt *.pdf, osv. Dette kan gjøres separat, én utvidelse om gangen, eller bare bruke én kommando som inkluderer alle ønskede utvidelser.

finne. -type f ( -navn «*.txt» -o -navn «*.pdf» -o -navn «*.doc» )

produksjon

./test/subtest/subfil.txt
./test/qatree.pdf
./test/file22.txt
./test/qa.txt
./test/file30.doc
./books/acro.pdf
./data1/FILE22.txt
./docs/files32.txt

Finn filer som inneholder bestemt tekst

Noen ganger vil du ha tilgang til en fil som inneholder bestemt tekst, men kan ikke huske filnavnet eller plasseringen. Denne kommandoen lar deg finne alle filene som inneholder målteksten.

For å se etter alle filene som inneholder ordet hyperkonvergens”, bruk;

find / -type f -exec grep -l -i "hyperconvergence" {} ;

Produksjon

/root/numeric/hci
/root/HCIP

Alternativet –i gjør det mulig for kommandoen å ignorere tilfeller og vil finne teksten enten med stor bokstav eller ikke, dvs. hyperkonvergens, hyperkonvergens, etc.

For å se etter filene i en bestemt katalog, legg dem til i kommandoen

find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;

Produksjon

./numeric/hci

Utforsk flere eksempler på grep-kommandoer.

Finn filer og kataloger basert på størrelse

Du kan finne alle filer eller kataloger som er mindre, like eller større enn en viss størrelse, innenfor et visst område eller tomme. Bruk passende størrelsesformat avhengig av typen filer eller kataloger du søker etter.

Størrelsesalternativer inkluderer;

c – byte

k – kilobyte

M – Megabyte

G – Gigabyte

Finn filer av en viss størrelse – lik 30 MB

For å søke finner du alle 30MB-filer

find / -size 30M

Finn filer som er større enn en spesifisert størrelse

find -size +2M

Produksjon

. /Downloads/ubuntu18043.iso 
./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c

Finn filer på mindre enn 10 MB i gjeldende katalog

find . -type f -size -10M

Finn filer med størrelser mellom 100-200 MB

Når du ser etter filer innenfor et spesifikt område, for eksempel mellom 100 og 200 MB

find / -size +100M -size -200M

Se etter kataloger som er større enn 20 kb

finn / -type d -størrelse +20k

Finn tomme filer og kataloger.

Filer

finn ./ -type f -størrelse 0

eller

find ./ -type f –empty

Kataloger

find ./ -type d –empty

Finn filer etter alder eller endringstid

Finn filer som er eldre enn n dager

find /path/ -type f -name '*.txt' -mtime +8

-mtime +8 vil se etter txt-filer som er eldre enn 8 dager.

Etter endringsdato

Dette vil se etter filer som er endret i løpet av de siste 17 timene

find . -mtime -17 -type f 

Ser etter kataloger som er endret i løpet av de siste 10 dagene

find . -mtime -10 -type d 

Finn filer basert på tilgang eller endring

Finn filer basert på dato eller klokkeslett for tilgang. Dette lar deg se filer som har eller ikke har blitt åpnet innen en spesifisert periode.

  Hvordan sette et Bash-skript på pause med Linux Sleep-kommandoen

For å se filer som ikke har blitt åpnet i løpet av de siste 10 dagene i hjemmekatalogen.

find /home -atime +10

Filer åpnet for nøyaktig 10 dager siden

find /home -atime 10

Tilgang i løpet av de siste 10 dagene

find /home -atime -10

Finn filer som er endret i løpet av de siste n dagene

Du kan også se etter filene i /home-katalogen som er endret i løpet av de siste 10 dagene ved å bruke kommandoen;

find /home -mtime -10 

Finn filer som er endret innenfor en bestemt periode.

For eksempel, alle filer endret for mellom 6 og 15 dager siden i hjemmekatalogen.

find /home -type f -mtime +6 -mtime -15

Filer og kataloger som er åpnet i løpet av de siste 10 minuttene

For å finne filene du har fått tilgang til i løpet av de siste 10 minuttene, bruk -amin-alternativet.

find . -amin -10 -type f

Produksjon

./.bash_history
./[email protected]:~#

Kataloger åpnet i løpet av de siste 10 minuttene

find . -amin -10 -type d

Finn filer som samsvarer med spesifikke tillatelser

Syntaks

$ find -perm mode

Hvor modus er tillatelsen som enten er numerisk som 644, 655, 700, 777 osv., eller bokstaver som u=x, a=r+x osv.

Du kan spesifisere modusen på følgende tre forskjellige måter.

  • Uten et prefiks når du ønsker å finne filer med nøyaktig spesifiserte tillatelser.
  • Med «-» for filer med minst den angitte tillatelsen. Dette returnerer filer med spesifiserte, så vel som ytterligere høyere tillatelser.
  • Bruk av «/» krever spesifikasjon av eieren eller gruppen med tillatelse til filen.
  • Finn filer med tillatelse 777

    find -perm 777

    Produksjon

    ./file1

    Finn filer med minst 766
    finn -perm -766

    Produksjon

    ./file2
    ./file1

    Kommandoen ser etter alle filer der

    • Fileieren har lese-/skrive-/utføringstillatelser.
    • Gruppen har lese-/skriverettigheter
    • Andre har lese-/skrivetillatelse

    Som sådan returnerer den to filer som oppfyller dette kriteriet – fil1 og fil2. Filene trenger ikke å ha de nøyaktige 766-tillatelsene og kan ha flere så lenge, men må ha minst de spesifiserte.

    Finn filer som kan skrives av eieren

    Vi vil nå bruke «/» for å se etter filer som kan skrives av enten eieren, gruppen eller andre.

    find -perm /222
    .
    ./file2
    ./file3
    ./file1

    Ovennevnte ser etter filer som kan skrives av enten eieren eller gruppen.
    Dette returnerer filer som er skrivbare av begge, men ikke nødvendigvis begge. For å se filer, der begge har skrivbare tillatelser, bruk – prefikset.

    find -perm -220

    Produksjon

    ./file2
    ./file1

    Finn filer som eies av en bruker

    Finn alle filer som eies av Jack

    find /home -user jack

    Produksjon

    /home/jack
    /home/jack/examples.desktop
    /home/jack/.gnupg
    /home/jack/.gnupg/private-keys-v1.d
    /home/jack/ans.cgi

    Finn bestemte filer som eies av en bruker

    Finn alle tekstfiler som eies av Jack

    find /home -user jack -iname "*.txt"

    Produksjon

    /home/jack/docs/file32.txt

    Finn og liste filer og kataloger sammen med deres tillatelser

    find -name "*.conf" | ls -l

    Produksjon

    total 120
    drwxr-xr-x 2 root root 4096 Dec 31 13:19 backup2
    drwxr-xr-x 2 root root 4096 Jan 4 11:57 Desktop
    drwxr-xr-x 2 root root 4096 Dec 31 11:50 Documents
    drwxr-xr-x 2 root root 4096 Dec 31 12:27 Downloads
    -rw-r--r-- 1 root root 0 Jan 4 12:02 file22.doc
    drwxr-xr-x 2 root root 4096 Jan 4 12:14 file23
    -rw-r--r-- 1 root root 0 Jan 4 12:23 file23.txt

    Finn og handle på resultatene

    I denne delen skal vi se på hvordan du kan handle på filene som samsvarer med mønsteret spesifisert i find-kommandoen.

    Finn filer og endre tillatelser

    Finn og endre tillatelser for bestemte filtyper. I vårt tilfelle vil vi jobbe med PHP-filer med forskjellige tillatelser som vist nedenfor.

    [email protected]:~/ver$ ls -la
    
    total 8
    drwxrwxr-x 2 jack jack 4096 Jan 3 14:11 .
    drwxr-xr-x 8 jack jack 4096 Jan 3 14:05 ..
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 ans.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 base.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 query.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 qust.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 vary.php

    Vi vil nå se etter alle PHP-filene (over) og erstatte deres tillatelser med 755

    find ver -name "*.php" -type f -exec chmod 755 {} ;

    Kommandoen ser etter PHP-filer i ver-katalogen og setter deretter deres tillatelse til 755 (rwxr-xr-x)

    Resultater

    [email protected]:~/ver$ ls -la
    total 8
    drwxrwxr-x 2 jack jack 4096 Jan 3 14:11 .
    drwxr-xr-x 8 jack jack 4096 Jan 3 14:05 ..
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 ans.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 base.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 query.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 qust.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 vary.php

    Finn og endre fil- og katalogtillatelser

    Finn filer med 644 tillatelser og endre dem til å ha 655 tillatelser

    find . -type f -perm 644 -exec chmod 655 {} ;

    Du kan også se etter kataloger med 644-tillatelser og erstatte dette med 755.

    find . -type d -perm 644

    Produksjon

    ./docs   

    Dokumenter-mappen har 644 tillatelser

    drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs

    For å sette den til 755, kjører vi

    find . -type d -perm 644 -exec chmod 755 {} ;

    Nå kan vi sjekke igjen for å se nøyaktig hva 755

    find . -type d -perm 755

    Produksjon
    .
    ./docs

      6 Linux-verktøy for å teste nettverkstilkobling

    Ovenfra kan vi se rot- og dokumentkatalogene har 755 tillatelser.

    Ls –la kommando gir følgende detaljer

    drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs

    Finn og kopier filer eller kataloger

    Finn og kopier en bestemt fil til en katalog

    Kommandoen nedenfor vil finne filen file22.txt og kopiere den til ~/tmp/images-katalogen.

    find -iname file22.txt -exec cp {} ~/tmp/images ;

    Finn og kopier én type filer til en katalog

    For å finne filer som bilder med jpg-utvidelse i gjeldende katalog og kopiere dem til en annen plassering som en bildemappe, bruk;

    find -iname '*.jpg' -exec cp {} ~/tmp/images ;

    Dette vil finne og kopiere alle jpg-filene til mappen ~/tmp/images.

    Finn og kopier én fil til mange kataloger

    Finn og kopier en enkelt til flere kataloger.

    find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {} ;

    Dette vil finne filen hci-filen og kopiere den til de tre katalogene til /tmp/dir1/ /tmp/dir2/ og $HOME/3/

    Finn og flytt filer til en annen katalog

    For å flytte en kjent fil fra en katalog til en annen. For å flytte filen universal.php;

    find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;

    Søk og flytt filer med en bestemt utvidelse til en annen mappe

    find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;

    Finn bestemte filer og flytt til en bestemt annen mappe

    find -type f -name uni*.* -exec mv {} ~/unifiles/ ;

    Kommandoen ser etter alle filene med navn som begynner med uni og har en filtype. Den flytter dem deretter til katalogen /unifiles/

    Finn og flytt filer basert på alder

    Finn og flytt filer som er eldre enn spesifiserte dager til et annet sted, for eksempel arkivet.

    find /path/ -type f -name '*.pdf' -mtime +20 -exec mv {} /backup1/ ;

    Dette vil se etter pdf-filer som er eldre enn 20 dager og flytte dem til backup1-katalogen.

    Finn og slett filer og kataloger

    Syntaksen for å finne og fjerne filer eller kataloger i gjeldende katalog er

    finne. -type f -navn «fil som skal slettes» -exec rm -f {} ; bare for å slette filer eller

    finne. -type d -navn «dir-å-slette» -exec rm -rf {} ; bare for å slette kataloger

    Finn og slett kun bestemte filer

    For å finne og slette filer som begynner med til, bruk;

    find . -type f -name "til*" -exec rm {} ; 

    For å finne og slette kataloger som starter med til

    find . -type d -name "til*" -exec rm {} ;

    Fjern både filer og kataloger

    find . -name "til*" -exec rm -rf {} ; 

    Dette vil fjerne både filer og kataloger som begynner med bokstavene til.

    Slett i forlengelse

    Nedenfor er hvordan du kan finne og slette alle txt-filer i gjeldende katalog. Erstatt txt-filen med en annen utvidelse som bak, pdf eller en annen du vil fjerne.

    find . -type f -name "*.txt" -exec rm -f {} ;

    Hvis du vil at systemet skal be deg om å bekrefte før du sletter hver fil, legg til -i-alternativet som nedenfor.

    find . -type f -name "*.txt" -exec rm -i {} ;

    Produksjon

    rm: remove regular empty file './File22.txt'? y
    rm: remove regular empty file './file22.txt'? y
    rm: remove regular empty file './file23.txt'?

    Som standard vil -rm ikke fjerne katalogene, og du må bruke -r-alternativet for å sikre en rekursiv fjerning. Dette sikrer sletting av tomme kataloger og de som inneholder filer. Alternativet -f tvinger fjerningen og brukes for både filene og katalogene.

    Finn og slett filer som er eldre enn n dager

    Finn og slett sikkerhetskopifiler som er eldre enn 20 dager fra gjeldende katalog.

    find . -type f -name '*.bak' -mtime +20 -exec rm {} ;

    Dette vil slette alle .bak-filer som er eldre enn 20 dager.

    Finn og slett bare kataloger

    For å slette en katalog kalt dir22

    find . -type d -name dir22 -exec rm -rf {} ;

    Sørg for at du samsvarer med katalognavnet eller bruk alternativet -iname.

    find . -type d -iname Dir22 -exec rm -rf {} ;

    Fjerner både Dir22 og dir22

    For å bekrefte før sletting, bruk -i-alternativet.

    find . -type d -iname Dir22 -exec rm -rf -i {} ;

    Produksjon
    rm: fjerne katalogen «./Dir22»? n
    rm: fjerne katalogen «./dir22»? y

    I vårt tilfelle skrev vi n for katalogen Dir22 som ikke vil bli slettet og y for katalogen 22 som nå vil bli fjernet.

    Finn og fjern tomme filer

    Du kan bruke hvilken som helst av følgende kommandoer for å finne tomme filer og slette dem automatisk.

    find ./ -type f -size 0 -exec rm -f {} ;

    eller
    finn ./ -type f -størrelse 0 | xargs rm -f
    eller
    finn ./ -type f -størrelse 0 -slett

    Finn og fjern tomme kataloger

    For å fjerne tomme kataloger bruker vi d-alternativet.

    find ./ -type d -empty -exec rmdir {} ;

    Et annet alternativ er å bruke slett i stedet for fjern.

    find ./ -type d -empty -delete

    Vær oppmerksom på at sletting av systemfiler eller kritiske filer fra datamaskinen din kan skade operativsystemet eller applikasjonene eller føre til tap av viktige data.

    For å unngå utilsiktede slettinger er det best å bruke en ikke-rootbrukerkonto. Sørg også for at du sletter de riktige filene som ikke er nyttige, og at du har en sikkerhetskopi av alle datafilene i tilfelle.

    Hva blir det neste?

    Gå videre og prøv ovennevnte Linux-finnkommandoer i laboratoriet eller IKKE-PRODUKSJONSmiljøet ditt. Se om du kan bruke noen til å automatisere filsystemoppryddingen med Crontab. Og for å mestre Linux, sjekk ut dette nettkurs.