I Linux operativsystemer, finn-kommandoen kan brukes til å søke etter filer og mapper på datamaskinen din. For å fortsette, velger du en kobling fra listen nedenfor eller gå gjennom hvert avsnitt i rekkefølge.
for Å bruke finn, begynn med å åpne en terminal sesjon for å få tilgang til kommandolinjen.
Grunnleggende funksjonalitet for å finne
å Kjøre uten å finne noen alternativer produserer en liste over hver fil og katalog i og under arbeidsmappe., For eksempel, hvis du arbeider katalogen /home/håper/Dokumenter, kjører finne utganger følgende:
- Hver fil i /home/håper/Dokumenter.
- Hver undermappe i /home/håper/Dokumenter.
- Hver fil i hver av de undermapper.
La oss se det i aksjon., Først, la oss sjekke våre arbeider katalogen ved å bruke kommandoen pwd:
pwd
/home/hope/Documents
la oss Nå kjøre uten å finne noen alternativer:
find
I dette eksempelet, ser vi en total av ti-filer og fire undermapper i og under våre Dokumenter-mappen.
legg Merke til at produksjonen starter med et enkelt punkt, som representerer arbeidsmappe., Kjører finne med noen valg, er det samme som du angir at søket skal starte i arbeidsmappen, slik som dette:
find .
eksemplet ovenfor er den «riktige» måten å bruke søk. Hvis du prøver å bruke det på en annen Unix-lignende operativsystem, for eksempel FreeBSD, angi en katalog er nødvendig. Det er god praksis å bruke denne formen for kommandoen.,
Angi hvor du vil søke på
for Å bare liste over filer og undermapper som finnes i katalogen /home/håper/Dokumenter/bilder, angir du den første argument på kommando:
find /home/hope/Documents/images
legg Merke til at den fullstendige banen er også vist i resultatene.,
Hvis vi jobber katalogen /home/håper/Dokumenter, kan vi bruke følgende kommando, som finner den samme filene:
find ./images
Men denne gangen, utgang reflekterer starter plasseringen av søk og ser ut som dette:
som standard, søkes det i hver undermappe på start beliggenhet. Hvis du ønsker å begrense hvor mange nivåer av undermappe til å søke, kan du bruke-maxdepth alternativet med et nummer.
For eksempel, spesifisere -maxdepth 1 søker bare i katalogen der starter søket., Hvis noen underkataloger er funnet, de er oppført nedenfor, men ikke søkte.,
find . -maxdepth 1
../images./bigfiles.txt./gimp-2.8.16.tar.bz2./hp-fanfic./archlinux-2016.02.01-dual.iso
Angi -maxdepth 2 søk i katalogen og en undermappe dyp:
find . -maxdepth 2
Angi -maxdepth 3 søker ett nivå dypere enn som så:
find . -maxdepth 3
Finn etter navn
Hvis du vil begrense søkeresultatene til en kamp bare filer og kataloger som har et bestemt navn, kan du bruke navn-alternativ og sett navnet i anførselstegn:
find . -name "picard.jpg"
./images/memes/picard.jpg
Du kan også bruke jokertegn som en del av filnavnet., For eksempel, for å finne alle filer hvis navn slutter på .jpg, kan du bruke en stjerne til å representere resten av fil. Når du kjører kommandoen, skallet vil glob filnavnet til noe som samsvarer med mønsteret:
find . -name "*.jpg"
./images/hp/snape.jpg./images/hp/harry.jpg./images/memes/winteriscoming.jpg./images/memes/picard.jpg
Merke at våre kommando-ikke-listen filen med filtypen (i dette tilfellet, JPG) er i store bokstaver. Det er fordi i motsetning til andre operativsystemer, for eksempel Microsoft Windows, Linux-fil navn er case-sensitive.,»>
for Å liste kataloger bare og utelate filen navn, angi type d:
find . -type d
../images./images/hp./images/memes./hp-fanfic
søk etter filer basert på størrelse
For eksempel, for å finne filer som er større enn 50 kb», bruker -størrelse +50k:
find . -size +50k
./images/memes/winteriscoming.jpg./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso
For filer som er større enn 10 mb», bruker -størrelse +10M:
find . -size +10M
./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso
For de «større enn 1 gb, kan du bruke -størrelse +1G:
find . -size +1G
./archlinux-2016.02.01-dual.iso
For filer i en bestemt størrelse, rekkevidde, kan du bruke to -størrelse alternativer., For eksempel, for å finne filer som er større enn 10 mb, men mindre enn 1 gigabyte», angi størrelse +10M -size -1G:
find . -size +10M -size -1G
./gimp-2.8.16.tar.bz2
søk etter filer basert på endring, få tilgang til, eller endre status
– mtime alternativet begrenser søket ved hvor mange dager siden-filen innholdet ble endret. For å angi dager i det siste, kan du bruke et negativt tall., For eksempel, for å finne de bare filer som ble endret i de siste to dager (48 timer), bruk-mtime -2:
find . -mtime -2
– mmin alternativet gjør det samme, men i form av minutter, ikke dager. For eksempel vil denne kommandoen viser bare filer som er endret i den siste halve timen:
find . -mmin -30
Et lignende alternativ er -ctime, som sjekker når en fil er status ble endret, målt i dager. En status endringen er en endring i filens metadata. For eksempel, endre tillatelser for en fil er status endres.,
alternativet-cmin søker etter en statusendring, målt i minutter.
Du kan også søke for når filen sist ble åpnet — med andre ord når innholdet ble sist sett. De -atid alternativet brukes til å søke etter filer basert på siste-tilgang tid, målt i dager.
– amin alternativet gjør samme søk begrensning, men målt i minutter.
Omdirigere utdata til en tekst-fil
Hvis du utfører et meget stort søk, kan det hende du ønsker å lagre søkeresultatet i en fil, slik at du kan se resultatene senere., Du kan gjøre dette ved å omdirigere dine finne utgang til en fil:
find . -iname "*.jpg" > images.txt
Du kan åpne dine resultater i en tekst-editor, eller skrive dem ut med cat-kommandoen.
cat images.txt
Alternativt, du kan pipe din utgang til tee-kommandoen, som skrives ut til skjerm, og skrive det til en fil:
find . -size +500M | tee bigfiles.txt
./archlinux-2016.02.01-dual.iso
cat bigfiles.txt
./archlinux-2016.02.01-dual.iso
Undertrykke feilmeldinger
det kan hende Du får feilmeldingen «Permission denied» når du utfører et søk., For eksempel, hvis du søker etter rot-katalogen som en vanlig bruker:
find /
vil Du motta som feilmelding dersom finner du prøver å åpne en fil på din brukerkonto ikke har tillatelse til å lese. Du kan utføre søk som superbruker (root), som har full tilgang til alle filene på systemet. Men det er ikke anbefalt å gjøre ting som root, med mindre det finnes ingen andre alternativer.,
Hvis alt du trenger å gjøre er å skjule «Permission denied» – meldinger, kan du legge til 2&>1 | grep -v «Permission denied» til slutten av en kommando, som dette:
find / 2>&1 | grep -v "Permission denied"
I eksemplet ovenfor filtrerer ut «Permission denied» – meldinger fra dine søk. Hvordan?
2>&1 er en spesiell omdirigere som sender feilmeldinger til standard utgang til pipe den kombinerte linjer med utgang til grep-kommandoen., grep-v utfører deretter en invers match på «Permission denied», viser bare linjer som ikke inneholder denne strengen.
Omadressere og bruke grep for å filtrere feilmeldingene er en nyttig teknikk når «Permission denied» er rot på dine søke resultater, og du kan ikke utføre søk som root.
Eksempler på
find ~/. -name "*.txt" -amin -120
Finne alle filer i hjemmekatalogen, og nedenfor som ender i extension «.txt». Viser bare filer som er tilgjengelig i de siste to timer.,
find . -name "*.zip" -size +10M -mtime -3
Finne alle filene i arbeidsmappen og nedenfor med navn som har filtypen «.zip», og hvis størrelsen er større enn 10 mb. Viser bare filer med innhold som ble endret i løpet av de siste 72 timer.
find . -iname "*report*" -type f -maxdepth 2
Utføre en bokstaver søk etter filer som inneholder ordet «rapport» i navnet sitt. Hvis søket finner en katalog med «rapport» i navnet, vises ikke det. Søk bare i arbeidsmappen, og en katalog for nivå under det.,
find / -name "*init*" 2>&1 | grep -v "Permission denied" | tee ~/initfiles.txt
Finne alle filene på systemet med navn som inneholder «init», undertrykke feilmeldinger. Vis resultater på skjermen, og lagre dem i en fil i hjemmekatalogen som heter «initfiles.txt».
Legg igjen en kommentar