Linux find
kommando er et kraftig verktøy som lar systemansvarlige til å finne og behandle filer og kataloger basert på et bredt spekter av søkekriterier. Det kan finne kataloger og filer etter navn, type, eller filtype, størrelse, tillatelser, etc.
i Tillegg til å finne filer og mapper, ved å kombinere find
kommando med andre gjør det mulig for deg å ta handling på resultatene., Å legge til -exec
alternativet kan sysadmins å kjøre eksterne kommandoer og utføre handlinger som å kopiere, flytte, slette eller endre tillatelser av filer som passer til den angitte kriterier som størrelse, navn, etc.
I denne artikkelen, vi vil starte med å forklare de grunnleggende Linux finne kommandoer med eksempler. Dette vil vise deg hvordan å finne filer og kataloger. Deretter vil vi vise deg hvordan du bruker -exec
alternativ til å handle på filer eller kataloger basert på deres størrelse, tillatelser, etc.,
Den generelle syntaksen for kommandoen finn er
find {path} {name -of-file or dir-to-search} {action-to-take}
Hvor
I denne opplæringen, vil vi forklare hvordan for å finne filer og kataloger matchende angitt mønstre. Vi vil også se hvordan å utføre handlinger på filer eller kataloger som finn-kommandoen finner. Veiledningen er basert på Ubuntu, men er gjeldende for de fleste Linux-distribusjoner, og versjoner.
søk etter filer og Kataloger
Finn bestemte filer etter navn eller utvidelse
for Å søke etter en bestemt fil, kan du kjøre følgende kommando fra root (/)., Kommandoen inneholder den eksakte navn for filen du søker etter.
find . -name file22.txt
Output
./test/file22.txt./sales/file22.txt
Vær oppmerksom på at resultatene inkluderer banen. Dette er viktig hvis du ikke vet katalogen der filen er plassert, eller når det er på mer enn ett sted.
Du kan også søke etter filen i en annen mappe mens de fortsatt i den nåværende plasseringen. I dette tilfellet, må du oppgi banen til katalogen hvor du ønsker å søke etter.,
find ./test -name file22.txt
Ser for bestemte filer i en annen mappe
I vårt tilfelle, vil vi lete etter alle de som begynner med disse bokstavene fil i test-katalogen.
find ./test -name file*
Output
./test/file22.txt./test/file30.doc./test/file1.txt./test/file5,doc
Søk etter filer ved utvidelse
for Å finne en fil i Linux med en viss utvidelse, legge det til i kommandoen.,
find . -name *.txt
Output
./test/subtest/subfil.txt./test/file22.txt./test/file1.txt./home1/files32.txt./home2/file22.txt./qa/tags.txt
Finn filer og mapper ved navn
Bruk kommandoen nedenfor for å søke etter filer og mapper som starter med bokstavene qa
. I datamaskinen vår, har vi qatree.txt
og qa.txt
filer samt en katalog ved navn qa
.,
Dersom vi kjører kommandoen;
find ./ -name "qa*"
Det gir følgende resultat
./test/qatree.pdf./test/qa.txt./home/qa
– kommandoen returnerer både filer og kataloger søkekriteriene. For å finne filer eller kataloger bare, må du angi dette i kommandoen.
Finn filer eller kataloger bare
av filer, kan du bruke type f
slå på.
– Filer
find ./ -type f -name "qa*"
Output
./test/qatree.pdf./test/qa.txt
Kataloger bare
Legg til type d
alternativ for å finne kataloger bare.,
find ./ -type d -name "qa*"
Output
./home/qa
mellom store og små Bokstaver finne kommandoen
Alle søk med -name
switch er case sensitive og vil ikke gi resultater med store bokstaver. For å få alle tilfeller, bruk -iname
alternativ.
find ./ -iname "qa*"
Output
./test/qatree.pdf./test/qa.txt./test/QAtest.txt./home/qa
Søk etter en fil fra flere kataloger
for Å finne filer i forskjellige mapper, legge til sine stier i kommandoen., I vårt tilfelle, vil vi sjekke i test
og numeric
kataloger.
find ./test ./numeric -name file22.txt -type f
Output
./test/file22.txt/root/numeric/file22.txt
Finn flere filer med ulike utvidelser fra alle kataloger
Du kan bruke kommandoen finn for å finne flere filer som deler de forskjellige utvidelser som for eksempel *.doc
, *.txt
*.pdf
, osv. Dette kan gjøres separat, en forlengelse på en gang, eller ved bruk av kun en kommando som inkluderer alle de ønskede utvidelser.,
find . -type f ( -name "*.txt" -o -name "*.pdf" -o -name "*.doc" )
output
Finn filer som inneholder bestemt tekst
noen Ganger ønsker du å ha tilgang til en fil som inneholder bestemt tekst, men kan ikke huske sine fil eller beliggenhet. Denne kommandoen gir deg mulighet til å finne alle filene inneholder målet tekst.
for Å søke etter alle filer som inneholder ordet hyperconvergence», bruk;
find / -type f -exec grep -l -i "hyperconvergence" {} ;
Output
/root/numeric/hci/root/HCIP
–jeg alternativet kan kommandoen til å ignorere tilfeller og vil finne tekst enten aktivert eller ikke, dvs. hyperconvergence, Hyperconvergence , etc.,
for Å se etter filer i en bestemt mappe, kan du legge det til kommandoen
find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;
Output
./numeric/hci
søk etter Filer og Kataloger Basert på Størrelse
Du kan finne alle filer eller kataloger som er mindre, lik eller større enn en viss størrelse, innenfor et bestemt område eller tomme. Bruk riktig størrelse format avhengig av filer eller kataloger som du søker etter.,nd-filer av en viss størrelse – lik 30MB
for Å Søke finne alle 30MB filer
find / -size 30M
Finn filer som er større enn en spesifisert størrelse
find -size +2M
Output
. /Downloads/ubuntu18043.iso ./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c
Finn filer som er mindre enn 10MB i den gjeldende katalogen
find . -type f -size -10M
Finn filer med størrelser mellom 100-200 MB
Når du ser etter filer innenfor et bestemt område, for eksempel mellom 100 og 200 MB
find / -size +100M -size -200M
Se etter kataloger større enn 20kb
find / -type d -size +20k
Finn tomme filer og kataloger.,
Filer
find ./ -type f -size 0
eller
find ./ -type f –empty
Kataloger
find ./ -type d –empty
Finn filer på grunn av alder eller modifikasjon tid
Finne filer som er eldre enn antall dager
find /path/ -type f -name '*.txt' -mtime +8
-mtime +8
vil se ut for txt
filer som er eldre enn 8 dager.,
endring Av dato
Dette vil se etter filer som ble endret i løpet av de siste 17 timer
find . -mtime -17 -type f
Ser for kataloger endret i løpet av de siste 10 dager
find . -mtime -10 -type d
Finn filer som er basert på tilgang til eller endring
Finne filer basert på dato eller klokkeslett for tilgang. Dette lar deg se filer som har eller ikke har vært i bruk i en angitt periode.
for Å se filer som ikke er blitt brukt i løpet av de siste 10 dager i hjemmekatalogen.,
find /home -atime +10
Filene som brukes av nøyaktig 10 dager siden
find /home -atime 10
brukt i løpet av de siste 10 dager
find /home -atime -10
Finn filer som ble endret i løpet av de siste n dagene
Du kan også se etter filer i /home
directory endret i løpet av de siste 10 dager ved å bruke kommandoen;
find /home -mtime -10
Finn filer som ble endret i løpet av en bestemt periode.
For eksempel, alle filer som ble endret mellom 6 og 15 dager siden i hjemmekatalogen.,
find /home -type f -mtime +6 -mtime -15
Filer og kataloger brukt i løpet av de siste 10 minuttene
for Å finne filer som er brukt i løpet av de siste 10 minutter, kan du bruke-amin alternativ.
find . -amin -10 -type f
Output
./.bash_history./.profileroot@ubuntu1804:~#
Kataloger brukt i løpet av de siste 10 minuttene
find . -amin -10 -type d
søk etter filer som passer til spesifikke tillatelser
Syntaks
$ find -perm mode
Hvor modus er den tillatelse som er enten numeriske for eksempel 644, 655, 700, 777
, osv, eller bokstaver som u=x, a=r+x,
osv.,
Du kan angi modus i følgende tre ulike måter.
- Uten prefiks når du ønsker å finne filer med nøyaktig tillatelser som er angitt.
- Med «
-
» for filer med minst den angitte tillatelse. Denne returnerer filer med angitte samt ytterligere høyere tillatelser. - ved Hjelp av «
/
» krever spesifisere eier eller gruppe med tillatelse til filen.,
Finn filer med tillatelse 777
find -perm 777
Output
./file1
Finne filer med minst 766
finn -perm -766
Output
./file2./file1
– kommandoen ser etter alle filer som
- filen eier har lese/skrive – /kjøretillatelser.
- Gruppe har lese-og skrivetillatelser
- Andre har lese-og skrivetilgang
Som sådan, går den tilbake to filer som oppfyller dette kriteriet – fil1 og fil2., Filene trenger ikke å ha nøyaktig 766
tillatelser og kan ha flere de så lenge, men må minst ha angitt.
Finn filer som er skrivbare av eieren
Vi vil nå bruke «/
» å ser etter filer som er skrivbare av enten sin eier, eller en gruppe, eller andre.
find -perm /222../file2./file3./file1
Den ovenfor ser etter filer som er skrivbare av enten sin eier eller gruppe.
Dette returnerer filer som er skrivbare av heller, men ikke nødvendigvis begge. For å se filer, der begge har skrivetilgang tillatelsene, kan du bruke den – prefiks.,
./file2./file1
Finn filer som eies av en bruker
Finne alle filer som eies av Jack
find /home -user jack
Output
/home/jack/home/jack/examples.desktop/home/jack/.gnupg/home/jack/.gnupg/private-keys-v1.d/home/jack/ans.cgi
Finn bestemte filer eies av en bruker
Finn alle tekstfiler som eies av Jack
find /home -user jack -iname "*.txt"
Output
/home/jack/docs/file32.txt
Finn og liste over filer og kataloger sammen med sine tillatelser
find -name "*.conf" | ls -l
Output
Søk og handle på resultater
I denne delen, vi vil se på hvordan du kan handle på filene som samsvarer med det mønsteret som er angitt i finn-kommandoen.,
Finn filer og endre tillatelser
Finne og endre tillatelsene for bestemte filtyper. I vårt tilfelle vil vi arbeide med PHP filer med ulike tillatelser som vist nedenfor.,
Vi vil nå se for alle PHP-filene (ovenfor) og kan erstatte deres tillatelser med 755
find ver -name "*.php" -type f -exec chmod 755 {} ;
– kommandoen ser for PHP-filer i ver
– katalogen, og deretter setter sin tillatelse til 755
(rwxr-xr-x
)
Resultater
Finn og endre fil og mappe tillatelser
Finne filer med 644 tillatelser og endre dem til å ha 655 tillatelser
find . -type f -perm 644 -exec chmod 655 {} ;
Du kan også se for kataloger med 644 tillatelser og erstatte denne med 755.,
find . -type d -perm 644
Output
./docs
De dokumenter-mappen har 644 tillatelser
drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs
for Å angi det til 755
, vi kjører
find . -type d -perm 644 -exec chmod 755 {} ;
Nå kan vi se igjen for å se hva som 755
find . -type d -perm 755
Output
.
./docs
Fra ovenfor kan vi se roten og dokumenter kataloger ha 755 tillatelser.,
Ls –la
– kommandoen gir følgende detaljer
drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs
Finn og kopiere filer eller kataloger
Finn og kopier en bestemt fil til en mappe
– kommandoen nedenfor finner file22.tx
t-filen og kopiere den til ~/tmp/images
– katalogen.,
find -iname file22.txt -exec cp {} ~/tmp/images ;
Finn og kopier en type filer til en katalog
for Å finne filer, for eksempel bilder med jpg
forlengelse i gjeldende mappe og kopiere dem til et annet sted som en bilder-mappen, bruker du;
find -iname '*.jpg' -exec cp {} ~/tmp/images ;
Dette vil finne og kopiere alle jpg-filer til ~/tmp/images
mappe.
Finn og kopiere en fil til mange kataloger
Finne og kopiere en enkelt til flere kataloger.,
find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {} ;
Dette vil finne den file hci-filen og kopiere den til tre kategorier av /tmp/dir1/ /tmp/dir2/
og $HOME/3/
Finn og flytte filer til en annen mappe
for Å flytte en kjent fil fra en mappe til en annen., For å flytte universal.php
fil;
find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;
Søk og flytter filer med en viss utvidelse til en annen mappe
find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;
Finn bestemte filer og flytte til en bestemt annen mappe
find -type f -name uni*.* -exec mv {} ~/unifiles/ ;
– kommandoen ser etter alle filer med navn som starter med uni
og å ha noen utvidelse. Det flytter dem deretter til katalogen /unifiles/
Finn og flytte filer basert på alder
Finne og flytte filer som er eldre enn angitt dager til en annen plassering, for eksempel arkivet.,
find /path/ -type f -name '*.pdf' -mtime +20 -exec mv {} /backup1/ ;
Dette vil se ut for pdf-filer som er eldre enn 20 dager og flytte dem til den backup1 katalogen.,filer og kataloger
syntaksen for å finne og fjerne filer eller mapper i gjeldende mappe er
find . -type f -name "file to delete" -exec rm -f {} ;
for å slette filer eller
find . -type d -name "dir-to-delete" -exec rm -rf {} ;
for å slette kataloger bare
Finn og slette bestemte filer
for Å finne og slette filer som begynner med til, bruk;
find . -type f -name "til*" -exec rm {} ;
for Å finne og slette mapper som starter med til
find . -type d -name "til*" -exec rm {} ;
Fjern for både filer og kataloger
find . -name "til*" -exec rm -rf {} ;
Dette vil fjerne både filer og kataloger som begynner med disse bokstavene til.,
Slett ved utvidelse
Nedenfor er hvordan du kan finne og slette alle txt
filer i gjeldende mappe. Erstatt txt
med en annen filtype, for eksempel bak
, pdf
eller noen andre som du vil fjerne.
find . -type f -name "*.txt" -exec rm -f {} ;
I tilfelle du vil systemet be deg om å bekrefte før sletting av hver fil, legge til -i valget nedenfor.,
find . -type f -name "*.txt" -exec rm -i {} ;
Output
standard -rm
vil ikke fjerne kataloger og du trenger å bruke –r
alternativet sikrer en rekursiv fjerning. Dette sikrer at du vil slette tomme mapper og de inneholder filer. -f
alternativet tvinger fjerning og er brukt for både filer og kataloger.
Finne og slette filer som er eldre enn antall dager
Finne og slette backup filer som er eldre enn 20 dager fra gjeldende mappe.,
find . -type f -name '*.bak' -mtime +20 -exec rm {} ;
Dette vil slette alle .bak
filer som er eldre enn 20 dager.
Finne og slette kataloger bare
for Å slette en mappe som heter dir22
find . -type d -name dir22 -exec rm -rf {} ;
Sørg for at du matche directory navn sak eller bruk det -iname
alternativ.
find . -type d -iname Dir22 -exec rm -rf {} ;
Fjerner både Dir22
og dir22
for Å bekrefte før sletting, kan du bruke det -jeg-alternativet.
find . -type d -iname Dir22 -exec rm -rf -i {} ;
Output
rm: fjern katalogen ‘./Dir22’?, n
rm: fjern katalogen ‘./dir22’? y
I vårt tilfelle, vi har skrevet n
for katalogen Dir22
som ikke vil bli slettet og y
for dir22
som vil nå være 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
søk ./ -type f -size 0 | xargs rm -f
eller
søk .,/ -type f -størrelse 0 –slett
Finn og fjern tomme kataloger
for Å fjerne tomme mapper vil vi bruke d
alternativ.
find ./ -type d -empty -exec rmdir {} ;
et Annet alternativ er å bruke slett-i stedet for å fjerne.
find ./ -type d -empty -delete
Vær oppmerksom på at hvis du sletter system eller kritiske filer fra datamaskinen din kan skade operativsystemet eller programmene eller føre til tap av viktige data.
for Å unngå utilsiktet sletting, det er best å bruke en ikke-root-bruker-konto., Også, sørge for at du sletter den riktige filer som ikke er nyttig, og at du har en backup av alle dine data filer bare i tilfelle.
Hva er neste?
Gå videre og prøve ovenfor Linux finne kommandoer i laboratoriet eller IKKE produksjonsmiljø. Se om du kan bruke til å automatisere file system opprydding med Crontab. Og, for å mestre Linux, sjekk ut dette online kurset.