Ser etter filer i Linux. Hvordan søke etter filer i Linux ved å bruke finn-kommandoen Linux finn alle filene i en katalog

Svært ofte må du raskt finne en fil i filsystemet, men du aner ikke hvor den er. Og hvis GUI-verktøy for å finne en fil er slitne eller du ikke har et GUI installert i det hele tatt, eller du ikke bruker det i prinsippet, vil omfattende kommandoer for å søke etter filer, mapper og deler av en fil i linux komme til redde.

Søk etter en fil etter navn i databasen.
Lokaliseringskommandoen kan brukes til å søke etter fil(er) etter del av filnavnet. Kommandoen skanner databasen med navn og gir banen til den/de søkte filen(e). Vi anbefaler å kjøre kommandoen med -i-alternativet: locate -i for et søk som ikke skiller mellom store og små bokstaver.
Eksempel:

[e-postbeskyttet]:~$ finn -i .ogg
/home/subsanek/ukjent - ukjent/01 - ukjent 1 - ???.ogg
/usr/local/Zend/ZendStudio-7.1.2/docs/PHPmanual/book.oggvorbis.html
/usr/local/Zend/ZendStudio-7.1.2/docs/PHPmanual/intro.oggvorbis.html
/usr/share/kde4/apps/bball/bounce.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/a.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/b.ogg
/usr/share/kde4/apps/klettres/en_GB/alpha/c.ogg
(avkortet)


-kommandokall fant alle filene på systemet med ogg-utvidelsen.
finn søk etter filer veldig raskt, men det er bare å se på en liste over navn fra databasen, og hvis filen er nylig, er det en god sjanse for at den ikke blir funnet.
Databaseoppdatering.
Du kan oppdatere databasen til locate-kommandoen med kommandoen (som root):
oppdatertb
Lesbar utgang.
Ofte kan lokaliseringskommandoen gi et multi-tusen resultat som bare blinker foran skjermen og ikke gjør noe for øynene dine, for å unngå dette kan du omdirigere resultatet av utdataene til beholderen:
finn -i .ogg | mindre
Du kan også angi hvor mange resultater som skal vises med -n-alternativet:
finn -i .ogg -n 10
- viser de 10 første resultatene.

Søk etter filer med ekte skanning.
Find-kommandoen skanner filsystemet for å finne en fil, noe som gjør dette verktøyet tregt, men effektivt.
For å søke etter navn, må du spesifisere -navn-nøkkelen
Eksempel:
finn -navn filnavn.txt
Som standard finner du søk rekursivt i gjeldende katalog.

Søk etter tekst etter fragment av tekst.
Den legendariske grep-kommandoen kan tjene nesten alle formål. Jeg liker å bruke det ikke bare for å finne de riktige filene i kildekatalogen. Du kan også bruke grep til å søke etter regulære uttrykk.
kommando prototype:
grep "søkemønster" file_to_search
Eksempel:
grep -R "tekst" /
-kommando vil søke rekursivt i alle tekstfiler i systemet etter ordet tekst.
Grep har et imponerende antall alternativer som du kanskje trenger ganske ofte:

[e-postbeskyttet]:~$ grep --help
Bruk: grep [KEY]... PATTERN [FIL]...
Søk etter MØNSTER i hver FIL eller standardinngang.
Som standard er PATTERN et enkelt regulært uttrykk (BRE).
Eksempel: grep -i "hello world" menu.h main.c

Velge en regulær uttrykkstype og tolke den:
-E, --extended-regexp PATTERN - utvidet regulært uttrykk (ERE)
-F, --fixed-regexp MØNSTER - strenger med fast lengde atskilt
nylinjekarakter
-G, --basic-regexp PATTERN - enkelt regulært uttrykk (BRE)
-P, --perl-regexp PATTERN - Perl regulære uttrykk
-e, --regexp=PATTERN bruk PATTERN for søk
-f, --file=FIL ta PATTERN fra FIL
-i, --ignore-case ignorer case-forskjell
-w, --word-regexp MØNSTER må samsvare med alle ord
-x, --line-regexp PATTERN må samsvare med hele linjen
-z, --null-datastrenger er atskilt med en nullbyte, ikke
linjeavslutning

I tillegg:
-s, --no-meldinger undertrykker feilmeldinger
-v, --revert-match velg umatchede linjer
-V, --versjon viser versjonsinformasjon og avslutt
--hjelp vise hjelp og gå ut
--mmap bruk minnekartlegging (mmap) når det er mulig

Utgangsstyring:
-m, --max-count=NUM stopp etter spesifiserte NUM treff
-b, --byte-offset print offset in
bytes
-n, --line-nummer utskriftslinjenummer sammen med utgangslinjer
--linjebufret flushbuffer etter hver linje
-H, --with-filename print filnavn for hver kamp
-h, --no-filename starter ikke utdata fra filnavn
--label=LABEL utdata LABEL som filnavn for
standard inngang
-o, --only-matching viser bare den delen av strengen som samsvarer med PATTERN
-q, --quiet, --silent undertrykker all normal utgang
--binary-files=TYPE vurdere binær fil TYPE:
binær, tekst eller uten samsvar.
-a, --tekst samme som --binære-filer=tekst
-I samme som --binære-filer=uten-match
-d, --directorys=ACTION hvordan håndtere kataloger
ACTION kan leses (les),
gjenta (rekursivt), eller hoppe over (hoppe over).
-D, --devices=HANDLING hvordan håndtere enheter, FIFOer og stikkontakter
ACTION kan være "les" eller "hopp over"
-R, -r, --rekursivt samme som --directorys=recurse
--include=F_PATTERN behandler kun filer som samsvarer med F_PATTERN
--exclude=F_PATTERN hoppe over filer og kataloger,
samsvarer med F_TEMPLATE
--exclude-from=FIL hoppe over filer som samsvarer med mønsteret
filer fra FILE
--exclude-dir=PATTERN-kataloger som samsvarer med PATTERN,
vil bli hoppet over
-L, --files-without-match skriv kun ut FILnavn uten treff
-l, --files-with-matches skriver kun ut FILnavn med samsvar
-c, --count skriv kun ut antall treff
linjer per FIL
-T, --initial-tab tab-align (hvis nødvendig)
-Z, --null print byte 0 etter FILnavn

Konteksthåndtering:
-B, --before-context=NUM skriv ut antallet linjer i forrige kontekst
-A, --after-context=NUM skriv ut NUM linjer med påfølgende kontekst
-C, --context[=NUM] skriv ut NUM kontekstlinjer,
--farge[=NÅR],
--colour[=NÅR] bruk markører for å skille treff
linjer; NÅR kan alltid (alltid),
aldri (aldri), eller automatisk (automatisk)
--color, --colour bruk markører for å skille samsvarende linjer
-U, --binary fjerner ikke CR-tegn på slutten av en linje (MSDOS)
-u, --unix-byte-offsets utgangsforskyvning som om det ikke er noen CR-er (MSDOS)

Grep -E skal kjøres i stedet for egrep. grep -F antas i stedet for fgrep.
Det er best å unngå å kjøre som egrep eller fgrep.
Når FILE ikke er gitt, eller når FILE er -, leses standardinndata.
Hvis mindre enn to filer er spesifisert, antas -h. Når funnet
samsvarer, vil programavslutningskoden være 0, og 1 hvis ikke.
feil, eller hvis -q-alternativet ikke er spesifisert, er utgangskoden 2.

I dag skal vi ta en titt på noen av de mest populære måtene å finne filer i Linux ved å bruke terminalen.

1) finn: For å søke etter filer fra kommandolinjen, kan du bruke "finn"-kommandoen. Denne kommandoen har følgende syntaks:

finne banekriterier handling

sti - Seksjon for å spesifisere søkekatalogen. Hvis ingenting er spesifisert, går søket gjennom gjeldende katalog.

"kriterier" - Søkealternativer.

handling - Alternativer som påvirker eller kontrollerer søketilstanden, som f.eks

2) finn: Team "Lokaliser" dette er et alternativ til kommandoen "finn -navn". Find-kommandoen ser etter filer i den valgte delen av filsystemet, og prosessen er kanskje ikke veldig rask. På den annen side søker locate-kommandoen opp filer i den spesiallagde databasen /var/lib/locatedb for dette formålet, som er mye raskere. For å oppdatere databasen, bruk kommandoen oppdatertb.

3) hvor er:hvor er" returnerer plasseringen av koden (alternativ -b), man-sider (alternativ -m) og kildefiler (alternativ -s) for den angitte kommandoen. Hvis ingen alternativer er spesifisert, vises all tilgjengelig informasjon. Denne kommandoen er raskere enn " finne" men mindre komplett.

4) som: Team" hvilken" søker etter alle stier oppført i PATH-variabelen for den angitte kommandoen.

5) type:

Når det kalles opp uten alternativer, viser det hvordan navnene vil bli tolket

når det brukes som kommandonavn. Hvis alternativet brukes -en, team type gir en liste over alle kataloger der det er en kjørbar fil med

tilsvarende navn. Listen inkluderer også aliaser og funksjoner,

med mindre et alternativ er spesifisert -s. TIL

kommandoen hash er ikke referert hvis alternativet er spesifisert -en. Team type returnerer 0,

hvis minst ett av argumentene er funnet, og 1 ellers.

vakt

Explo.ru - alt om turisme og rekreasjon: varme turer og turer til Tyrkia, Egypt,

    Finn filen etter navnet. Et så enkelt søk utføres ved hjelp av finneverktøyet. Kommandoen nedenfor vil søke etter en fil i gjeldende katalog og alle underkatalogene.

    finn -iname "filnavn"

    • Skriv inn -iname i stedet for -name for å ignorere store og små bokstaver i det angitte filnavnet. Kommandoen -name skiller mellom store og små bokstaver.
  1. Begynn å søke i rotkatalogen. For å starte et systemomfattende søk, legg til /-modifikatoren i søket. I dette tilfellet vil find-kommandoen lete etter filen i alle kataloger, fra roten.

    finn / -iname "filnavn"

    • Du kan begynne å søke i en bestemt katalog; for å gjøre dette, erstatt / med en katalogbane, for eksempel /home/max .
    • Kan bli brukt. i stedet for / for bare å se etter filen i gjeldende katalog og dens underkataloger.
  2. Bruk jokertegnet .* for å finne filer hvis navn samsvarer med en del av søket. Du kan bruke jokertegnet * for å finne en fil hvis fulle navn ikke er kjent, eller for å finne alle filer med en bestemt filtype.

    finn /home/max -iname "*.conf"

    • Denne kommandoen vil finne alle .conf-filer i brukerens Max-mappe (og dens undermapper).
    • Bruk denne kommandoen til å finne alle filer hvis navn samsvarer med en del av spørringen. For eksempel, hvis datamaskinen din har mange WikiHow-relaterte filer, søk etter alle filene ved å skrive "*wiki*" .
  3. Gjør det enklere å administrere søkeresultatene dine. Hvis det er for mange søkeresultater, er det vanskelig å finne ønsket fil blant dem. Bruk symbolet | slik at søkeresultatene filtreres av mindre-kommandoen. Dette vil gjøre det enklere å se og filtrere søkeresultater.

    finn /home/max -iname "*.conf" | mindre

    Finn spesifikke elementer. Bruk modifikatorer for å vise bare visse elementer i søkeresultatene. Du kan søke etter vanlige filer (f), kataloger (d), symbolske lenker (l), tegn I/O-enheter (c) og blokkeringsenheter (b).

    finn / -skriv f -iname "filnavn"

  4. Filtrer søkeresultatene etter filstørrelse. Hvis datamaskinen din har mange filer med lignende navn, men du vet størrelsen på filen du leter etter, filtrerer du søkeresultatene etter filstørrelse.

    finn / -størrelse +50M -iname "filnavn"

    • Denne kommandoen vil finne alle filer som er større enn 50 MB. Bruk + eller - modifikatoren for å indikere en økning eller reduksjon i størrelse. Hvis det ikke er noen + eller - modifikator, vil kommandoen finne filer som samsvarer nøyaktig med den angitte størrelsen.
    • Søkeresultater kan filtreres etter byte (c), kilobyte (k), megabyte (M), gigabyte (G) eller blokker på 512 byte (b). Vær oppmerksom på at modifikatorene ovenfor skiller mellom store og små bokstaver.
  5. Bruk logiske operatorer (boolske operatorer) for å kombinere søkefiltre. Du kan bruke -og , -eller , -not-operatorene for å kombinere forskjellige søk til ett enkelt søk.

    finn /reisebilder -type f -størrelse +200k -ikke -iname "*2015*"

    • Denne kommandoen vil finne filer i "Travelphotos"-mappen som er større enn 200 KB og som ikke har nummeret 2015 i navnene sine.

Det hender at du vet at en fil eller katalog finnes, men du vet ikke hvordan du finner den. Det er flere kommandoer som hjelper deg med dette: finn , finn og hvilken .

4.10.1. finne kommando

Find-kommandoen har følgende format:

Finn banemønster_å_søke

Hvis du ikke spesifiserer en bane, vil find begynne å lete etter det gitte mønsteret i gjeldende katalog og fortsette gjennom alle underkatalogene den inneholder.

Find-kommandoen har mange alternativer, som du finner på man-siden (skriv man find på kommandolinjen). Det mest brukte alternativet er -name , som søker etter alle filer og kataloger som inneholder en bestemt kombinasjon av bokstaver i navnet.

finne. -navn tes

Denne kommandoen søker i gjeldende katalog for alle filer som inneholder "tes" i navnet.

4.10.2. finn kommandoen

Med denne kommandoen kan du se alle filer eller kataloger hvis navn inneholder det søkte mønsteret. For å søke etter en fil som inneholder ordet hund i navnet, skriv inn:

Finn hunden

locate-kommandoen bruker en database til å finne filer eller kataloger som inneholder ordet hund i navnene deres. Søkeresultatene kan inkludere en fil kalt dog , en fil kalt bulldog.txt , en katalog kalt /dogs/ , og så videre. For å lære mer om locate-kommandoen, se man-siden (skriv man locate på kommandolinjen).

Forutsatt at databasen er oppdatert, er locate-kommandoen veldig rask i søk. Lokaliseringskommandoens database oppdateres hver natt ved hjelp av cron-tjenesten.

cron er et lite program som kjører i bakgrunnen og utfører ulike oppgaver (som å oppdatere locate-kommandoens database) med jevne mellomrom. For å få tilgang til cron-manualen, skriv inn man cron på kommandolinjen.

cron oppdaterer periodisk slocate-databasen, som brukes til å finne filer eller kataloger. Å bytte mellom operativsystemer og slå av maskinen på slutten av dagen hindrer cron i å automatisk oppdatere databasen.

For å oppdatere databasen manuelt, logg inn som root (ved å skrive su - ved ledeteksten og skrive inn root'as passord) og skriv updatedb ved ledeteksten.

Etter en stund vil slocate-databasen som brukes av locate-kommandoen bli oppdatert.

Når du er ferdig med arbeidet du trenger å være root for, skriv exit på kommandolinjen - du kommer tilbake til økten.

Du er sikkert kjent med dette problemet: Det er en fil, og du husker ikke hvor du la den.

I dette tilfellet er finn-kommandoen nyttig. Hvordan bruke det? Selvfølgelig kommer dette verktøyet med en stor man-side, men vi skal se på noen typiske tilfeller. Bla gjennom katalogtreet, start med det gjeldende, og finn filen lostfile.txt:

Hvis du søker gjennom et stort katalogtre, kan finn-kommandoen være ganske treg. Noen ganger er det mer praktisk å bruke locate-kommandoen. Den ser ikke etter filen direkte i filsystemet, men ser gjennom databasen. Denne metoden er mye raskere, men databasen kan bli utdatert. På noen distribusjoner oppdateres denne databasen hver natt. Du kan kjøre updatedb-kommandoen manuelt fra tid til annen for å oppdatere den. finn søk etter understrenger:

Antall tillatte stavefeil avhenger av lengden på filnavnet, men kan settes med -t-alternativet. For å tillate maksimalt 2 feil og bruke et tjenestetegn, skriv ganske enkelt:

Oversikt over katalogtre

Noen ganger er det nødvendig å få en oversikt over et katalogtre. Du har for eksempel fått en ny CD-ROM og vil gjerne vite hva som står på den. Du kan bare bruke ls - R . Personlig, for lesbarhet, foretrekker jeg en av følgende metoder. Tree (sunsite.unc.edu/pub/Linux/utils/file/tree-1.2.tgz) viser et katalogtre som et diagram.

Eller bruk gode gamle funn . I Gnu-versjonen av find , som vanligvis leveres med Linux, er det mulig å endre utdataformatet for å vise for eksempel filnavnet og størrelsen:

Du kan bruke en liten perl-rutine som fungerer med ls-kommandoen for å gjøre denne typen ting. Den kan lastes ned her: lsperl.gz . Det finnes mange andre verktøy for katalogtresurfing, men i de fleste tilfeller er disse tilstrekkelige.

Søk filer etter innhold (søk etter tekststrenger i filer).

Standardverktøyene for å finne tekststrenger i filer er grep / egrep for normale uttrykkssøk og fgrep for å søke etter bokstavelige strenger. For å søke etter et uttrykk i alle filene i gjeldende katalog, skriv ganske enkelt:

Hvis du synes det er vanskelig å huske disse lange kommandoene, bruk et lite skript som kan lastes ned her: grepfind.gz . Skriptet fjerner også ikke-utskrivbare tegn fra søkestrengen slik at du ikke ved et uhell får en binær fil som et resultat av egreps søk.

Et veldig interessant søkeprogram er agrep. Agrep fungerer i utgangspunktet som egrep , men lar deg søke basert på feilstavinger. For å søke etter et uttrykk og tillate maksimalt 2 feilstavinger, skriv inn:

Etter det kan du søke etter en streng i alle filer som tidligere ble indeksert

glimt -i -2 "søkeuttrykk"

glimpse tillater også stavefeil (det samme gjør agrep) og -2 indikerer at to feil er tillatt. glimt er tilgjengelig på