Android

Finn kommandoen i Linux

Поиск файлов в Linux и Unix — find, grep, ack, ripgrep

Поиск файлов в Linux и Unix — find, grep, ack, ripgrep

Innholdsfortegnelse:

Anonim

En av de vanligste operasjonene når du jobber med Linux er å søke etter filer og kataloger. På Linux-systemer er det flere kommandoer som lar deg søke etter filer med find og locate som de mest brukte.

locate kommandoen er den raskeste og enkleste måten å søke etter filer og kataloger med deres navn.

I denne opplæringen vil vi forklare hvordan du bruker locate kommandoen.

Installering av locate (lokalisering av kommando ikke funnet)

Avhengig av distribusjonen og hvordan systemet ble gitt, kan det hende at lokaliseringspakken er forhåndsinstallert på Linux-systemet ditt.

For å sjekke om locate er installert på systemet ditt, åpner du terminalen, skriver locate og trykker Enter . Hvis pakken er installert, vil systemet vise locate: no pattern to search for specified , ellers vil du se noe som locate command not found .

Hvis locate ikke er installert, kan du enkelt installere det ved å bruke pakkehåndtereren til din distro.

Installer locate på Ubuntu og Debian

sudo apt update sudo apt install mlocate

Installer locate på CentOS og Fedora

sudo yum install mlocate

Hvordan locate arbeid

locate søker etter et gitt mønster gjennom en databasefil som genereres av den updatedb kommandoen. De funnet resultatene vises på skjermen, en per linje.

Under installasjonen av mlocate-pakken opprettes en cron-jobb som kjører den updatedb kommandoen hver 24. time. Dette sikrer at databasen regelmessig blir oppdatert. For mer informasjon om cron-jobben, sjekk filen /etc/cron.daily/mlocate .

Databasen kan oppdateres manuelt ved å kjøre updatedb kommando som root eller bruker med sudo-rettigheter:

sudo updatedb

Oppdateringsprosessen vil ta litt tid, avhengig av antall filer og kataloger og hastigheten på systemet.

Filer opprettet etter databaseoppdateringen vises ikke i søkeresultatene.

Sammenlignet med den kraftigere funnkommandoen som søker i filsystemet, fungerer lokaliteten mye raskere, men mangler mange funksjoner og kan bare søke etter filnavnet.

Slik bruker du locate kommandoen

Syntaksen for locate er som følger:

locate PATTERN…

I den mest grunnleggende formen, når den brukes uten noen alternativer, vil locate skrive ut den absolutte banen til alle filer og kataloger som samsvarer med søkemønsteret og som brukeren har lest tillatelse til.

For å søke etter en fil som heter .bashrc du for eksempel:

locate.bashrc

Utgangen vil inneholde navnene på alle filene som inneholder strengen .bashrc i deres navn:

/etc/bash.bashrc /etc/skel/.bashrc /home/linuxize/.bashrc /usr/share/base-files/dot.bashrc /usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc /usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc

Filen /root/.bashrc vises ikke fordi vi kjørte kommandoen som en normal bruker som ikke har tilgangstillatelser til /root katalogen.

Hvis resultatlisten er lang, for bedre lesbarhet kan du føre utdataene til kommandoen less :

locate.bashrc | less

locate kommandoen godtar også mønstre som inneholder globende tegn som jokertegnet * . Når mønsteret ikke inneholder globende tegn kommandoen søker etter *PATTERN* , er det derfor i forrige eksempel ble alle filene som inneholder søksmønsteret i navnene deres vist.

Jokertegnet er et symbol som brukes til å representere null, ett eller flere tegn. For å søke etter alle .md filer på systemet, vil du for eksempel bruke:

locate *.md

For å begrense søkeresultatene bruker du alternativet -n etterfulgt av antall resultater du vil vises. For eksempel vil følgende kommando søke etter alle .py filer og vise bare 10 resultater:

locate -n 10 *.py

Finn som standard ut fra store og små bokstaver. Alternativet -i ( --ignore-case ) angir locate å ignorere sak og kjøre sak-ufølsom søk.

locate -i readme.md

/home/linuxize/p1/readme.md /home/linuxize/p2/README.md /home/linuxize/p3/ReadMe.md

Hvis du vil vise antall samsvarende oppføringer, bruker du alternativet -c (- --count ). Følgende kommando vil returnere antallet alle filer som inneholder .bashrc i deres navn:

locate -c.bashrc

6

Som standard sjekker ikke ikke om de funnet filene fremdeles eksisterer i filsystemet. Hvis du slettet en fil etter den siste databaseoppdateringen, hvis filen samsvarer med søksmønsteret, vil den bli inkludert i søkeresultatene.

Bruk alternativet -e (- --existing ) for å vise bare navnene på filene som eksisterer på det tidspunktet det kjøres. For eksempel vil følgende bare returnere de eksisterende .json filene:

locate -e *.json

locate --regex -i "(.mp4|\.avi)"

Konklusjon

locate kommandoen søker i filsystemet etter filer og kataloger hvis navn stemmer overens med et gitt mønster. Kommandosyntaxen er lett å huske, og resultatene vises nesten umiddelbart.

For mer informasjon om alle tilgjengelige alternativer for locate kommandotypen man locate i terminalen.

terminal lokalisere