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,
- 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.
-
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.
-
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*" .
-
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"
-
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.
-
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.
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"
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å