Android

Hvordan finne filer i Linux ved å bruke kommandolinjen

TED's secret to great public speaking | Chris Anderson

TED's secret to great public speaking | Chris Anderson

Innholdsfortegnelse:

Anonim

find kommandoen er et av de kraftigste verktøyene i Linux-systemadministratorens arsenal. Den søker etter filer og kataloger i et kataloghierarki basert på et gitt brukeruttrykk og kan utføre brukerspesifisert handling på hver matchede fil.

Du kan bruke find kommandoen til å søke etter filer og kataloger basert på tillatelser, type, dato, eierskap, størrelse og mer. Det kan også brukes i kombinasjon med andre verktøy som grep eller sed .

Linux find kommandosyntax

Den generelle syntaks for finnkommandoen er som følger:

find

  • options styrer behandlingen av de symboliske koblingene, feilsøkingsalternativene og optimaliseringsmetoden path… Attributtet path… attributtet definerer startkatalogen eller katalogene der finner vil søke i filene. expression består av alternativer, søkemønstre og handlinger atskilt av operatører.

For å søke etter filer i en katalog, må brukeren som påkaller finnkommandoen ha lesetillatelser i den katalogen.

La oss ta en titt på følgende eksempel:

find -L /var/www -name "*.js"

  • Alternativet -L (alternativer) forteller finnkommandoen for å følge symboliske lenker. /var/www (bane…) spesifiserer katalogen som skal søkes. (Uttrykk) -name "*.js forteller om å søke etter filer som slutter med .js (JavaScript-filer).

Finn filer etter navn

Å finne filer med navn er sannsynligvis den vanligste bruken av finnkommandoen. For å finne en fil etter -name , fulgte alternativet-navn navnet på filen du leter etter.

For å søke etter en fil som heter document.pdf i katalogen /home/linuxize vil du for eksempel bruke følgende kommando:

find /home/linuxize -type f -name document.pdf

Hvis du vil utføre et lite -iname søk, endrer du alternativet -name med -iname :

find /home/linuxize -type f -iname document.pdf

Kommandoen over vil samsvare med "Document.pdf", "DOCUMENT.pdf"..etc.

Finn filer etter utvidelse

Å søke etter filer etter filtype er det samme som å søke etter filer etter navn. For å finne alle filer som slutter med .log.gz i katalogen /var/log/nginx kan du for eksempel bruke:

find /var/log/nginx -type f -name '*.log.gz'

Det er viktig å nevne at når du bruker jokertegnet, må du enten sitere mønsteret eller unnslippe stjerne * -symbolet med motsnitt \ så det ikke blir tolket av skallet.

For å finne alle filer som ikke samsvarer med regex *.log.gz kan du bruke alternativet *.log.gz . For å finne alle filer som ikke ender i *.log.gz , vil du for eksempel bruke:

find /var/log/nginx -type f -not -name '*.log.gz'

Finn filer etter type

Noen ganger kan det hende du må søke etter spesifikke filtyper som normale filer, kataloger eller symlinker. I Linux er alt en fil.

For å søke etter filer basert på deres type, bruk alternativet -type og en av følgende beskrivere for å spesifisere filtypen:

  • f : en vanlig fil d : katalog l : symbolsk lenke c : tegnenheter b : blokkeringsenheter p : navngitt pipe (FIFO) s : socket

For å finne alle kataloger i den gjeldende arbeidskatalogen, vil du for eksempel bruke:

find. -type d

Det vanlige eksemplet vil være å rekursivt endre rettighetene til nettstedfilen til 644 og katalogtillatelser til 755 ved å bruke chmod kommandoen:

find /var/www/my_website -type d -exec chmod 0755 {} ; find /var/www/my_website -type f -exec chmod 0644 {} ;

Finn filer etter størrelse

For å finne filer basert på filstørrelsen, passerer du -size sammen med størrelseskriteriene. Du kan bruke følgende suffikser for å spesifisere filstørrelsen:

  • b : 512-byte blokker (standard) c : byte w : to-byte ord k : Kilobytes M : Megabyte G : Gigabyte

Følgende kommando vil finne alle filer med nøyaktig 1024 byte i /tmp katalogen:

find /tmp -type f -size 1024c

find kommandoen lar deg også søke etter filer som er større eller mindre enn en spesifisert størrelse.

I eksemplet nedenfor søker vi etter alle filer som er mindre enn 1MB i den gjeldende arbeidskatalogen. Legg merke til minus - symbolet før størrelsesverdien:

find. -type f -size -1M

find. -type f -size +1M

Du kan til og med søke etter filer innenfor et størrelsesområde. Følgende kommando vil finne alle filer mellom 1 og 2MB :

find. -type f -size +1M -size 21M

Finn filer etter endringsdato

find kommandoen kan også søke etter filer basert på deres siste endring, tilgang eller endringstid.

Samme som når du søker etter størrelse, bruk pluss- og minus-symbolene for “større enn” eller “mindre enn”.

La oss si at for noen dager siden endret du en av dovecot-konfigurasjonsfilene, men du glemte hvilken. Du kan enkelt filtrere alle filene under katalogen /etc/dovecot/conf.d som ender med .conf og har blitt endret de siste fem dagene med:

find /etc/dovecot/conf.d -name "*.conf" -mtime 5

Her er et annet eksempel på filtrering av filer basert på endringsdatoen ved å bruke -daystart alternativet. Kommandoen nedenfor viser alle filene i /home som ble endret for 30 eller flere dager siden:

find /home -mtime +30 -daystart

Finn filer etter tillatelser

Alternativet -perm lar deg søke etter filer basert på filtillatelsene.

For å finne alle filer med tillatelser på nøyaktig 775 i katalogen /var/www/html , vil du for eksempel bruke:

find /var/www/html -perm 644

Du kan prefiksere numerisk modus med minus - eller skråstrek / .

Når skråstrek / brukes som prefiks, må minst en kategori (bruker, gruppe eller andre) ha minst de respektive bitene satt for at en fil skal matche.

Tenk på følgende eksempelkommando:

find. -perm /444

Kommandoen ovenfor vil matche alle filene med lesetillatelser satt for enten bruker, gruppe eller andre.

Hvis minus - brukes som prefiks, må for at filen skal samsvare med minst de angitte bitene være angitt. Følgende kommando vil søke etter filer som har lese- og skrivetillatelse for eieren og gruppen og kan leses av andre brukere:

find. -perm -664

Finn filer etter eier

For å finne filer som eies av en bestemt bruker eller gruppe, bruk alternativene -user og -group .

For å søke etter alle filer og kataloger som eies av brukeren linuxize , vil du for eksempel kjøre:

find / -user linuxize

Her er et ekte eksempel. La oss si at du vil finne alle filer som eies av brukerens www-data og endre eierskapet til de matchede filene fra www-data til nginx :

find / -user www-data -type f -exec chown nginx {} ;

Finn og slett filer

For å slette alle samsvarende filer, legg alternativet-slett til slutten av kamputtrykket.

Forsikre deg om at du bare bruker dette alternativet når du er sikker på at resultatet samsvarer med filene du vil slette. Det er alltid en god idé å skrive ut de matchede filene før du bruker alternativet- -delete .

For eksempel å slette alle filer som slutter med .temp fra /var/log/ du vil bruke:

find /var/log/ -name `*.temp` -delete Bruk alternativet- -delete med ekstrem forsiktighet. Kommandolinjen for finn blir evaluert som et uttrykk, og hvis du legger til alternativet-slett først, vil kommandoen slette alt under startpunktene du spesifiserte.

Når det gjelder kataloger, kan find bare slette tomme kataloger som er rmdir .

Konklusjon

Vi har vist deg hvordan du bruker finnkommandoen med forskjellige alternativer og kriterier.

Denne artikkelen skal gi deg en grunnleggende forståelse av hvordan du finner filer på Linux-systemene dine. Du kan også besøke find man-siden og lese om alle andre kraftige alternativer for find kommandoen.

finn terminal