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.
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.
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.
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
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.