Oppdatert: 11/30/2020 av Datamaskinen Håper

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.

Obs!

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