close

Finne

Gå til navigasjon Gå til søk

find - et verktøy for å søke etter filer etter navn og andre egenskaper, brukt i UNIX - lignende operativsystemer . Kan søke i en eller flere kataloger ved å bruke kriterier spesifisert av brukeren . findReturnerer alle filer i arbeidskatalogen som standard . Dessuten findlar det brukeren bruke visse handlinger på alle funnet filer. Regulære uttrykk støttes også . For å søke etter filer etter innhold, bruk grep -verktøyet .

Liste over nøkler

  • -amin — tidspunktet for siste tilgang til filen (i minutter).
  • -atime — tidspunktet for siste tilgang til filen (i dager).
  • -cmin — tidspunkt for siste endring av eier eller tilgangsrettigheter til filen (i minutter).
  • -ctime — tidspunkt for siste endring av eier eller tilgangsrettigheter til filen (i dager).
  • -delete — slett funnet filer.
  • -deptheller -d - start søket fra de dypeste hekkenivåene, og ikke fra katalogroten.
  • -empty - bare tomme kataloger.
  • -exec command {} \; - utfører den angitte kommandoen på den funnet filen; vær oppmerksom på syntaksen.
  • -group - eier: brukergruppe eller GID.
  • -L - utvide symbolske lenker.
  • -ls - genererer utdata som en kommando ls -dgils.
  • -maxdepth — det maksimale hekkenivået for søket. "-maxdepth 1" begrenser søket til gjeldende katalog.
  • -mmin - Tidspunktet filen sist ble endret (i minutter).
  • -mounteller -xdev - ikke migrér til andre filsystemer.
  • -mtime er tidspunktet filen sist ble endret (i dager).
  • -name — søk etter filnavnmaske. Alternativet -nameskiller mellom store og små bokstaver, det vil si at det skiller mellom store og små bokstaver. Bruk alternativet for å søke etter filer uten store og små bokstaver -iname.
  • -newer другой_файл — se etter filer opprettet senere enn other_file.
  • -ok - før du utfører kommandoen spesifisert i -exec, gir du en melding.
  • -P - ikke utvide symbolske lenker  (standard oppførsel).
  • -perm - Spesifiser tilgangsrettigheter.
  • -print0skriver ut banen til gjeldende fil på standardutdata etterfulgt av et ASCII NULL-tegn (tegnkode 0).
  • -print — viser filene som ble funnet på skjermen.
  • -prune - brukes når du vil ekskludere visse kataloger fra søket.
  • -regex — søk etter filnavn ved hjelp av regulære uttrykk.
  • -regextype тип — angivelse av typen regulære uttrykk som brukes.
  • -size — størrelse: spesifisert i 512-byte blokker eller byte (tegnet for bytes er tegnet "c" bak tallet).
  • -type - type søk: f=fil, d=katalog (katalog), l=lenke (lenke), p=kanal (pipe), s=socket.
  • -user - eier: brukernavn eller UID.


Eksempler

Søk i gjeldende katalog

Finn alle filene i gjeldende og underordnede kataloger som starter med min .

Vennligst merk: når det gjelder unix , er alt, inkludert kataloger, en fil .

finne. -navn 'min*'

For å søke kun etter filnavn, må du bruke et tilleggsalternativ-type f 

finne. -navn 'min*' -type f

Søk i en bestemt katalog

Finn alle filene i rot- og underkatalogen som starter med min .

Å søke i rotkatalogen tilsvarer å søke på hele datamaskinen.

finn / -navn 'min*'

Søker etter filer i kataloger /usr/local/manog/opt/local/man

finn /usr/local/man /opt/local/mann -navn 'min*'

Søker etter flere filnavn

Finn alle filene i gjeldende og underordnede kataloger som starter med my eller qu .

Merk at som standard er alle argumenter koblet sammen ved hjelp av logiske og (alternativet -a, fra engelsk  og ). Hvis du trenger å kombinere flere argumenter med en logisk eller  - bruk alternativet -o, fra engelsk.  eller .

finne. \( -navn "min*" -o -navn "qu*"  \) -skriv ut

Søk etter flere filtyper ved å bruke regulære uttrykk

Finn alle filene i gjeldende og underordnede kataloger hvis utvidelse samsvarer med de som er oppført.

Dette søket utføres ved hjelp av regulære uttrykk .

finne. -type f -regex ".*\.\(jpg\|jpeg\|gif\|png\|JPG\|JPEG\|GIF\|PNG\)"

Det forrige eksemplet kan også skrives med regulære uttrykk

finne. -type f -regex "\(my\|qu\).*"

Kommandoutførelse

Alternativet -exec utfører kommandoen som følger den og erstatter {}den gjeldende filen. Finn alle kataloger under den angitte katalogen og endre deres tillatelser med chmod-kommandoen :

finn /path -type d -exec chmod 0755  {}  \;

Alternativet -exec er omtrent 10 ganger tregere enn å omdirigere utdata via xargs , så det anbefales å skrive denne koden slik:

finn /bane -type d | xargs chmod 0755

Kataloger med navn som inneholder mellomrom vil imidlertid ikke bli behandlet av xargs omdirigeringsmetoden, så du bør bruke det første alternativet, polstret:

finn /path -type d -exec chmod 0755  "{}"  \;

Eller bruk alternativet -print0og -0la deg behandle argumenter som inneholder mellomrom og anførselstegn:

finn /bane -type d -print0 | xargs -0 chmod 0755

Søk etter alle php.ini-filer i gjeldende katalog og erstatt teksten i hver fil som ble funnet ved å bruke sed -kommandoen .

finne. -name 'php.ini' -exec sed -i 's/log_errors = Av/log_errors = På/g'  "{}"  \;

Kompleks søk i flere typer filer og teksterstatninger i hver av dem, fra gjeldende katalog og nedenfor.

finne. -regex ".*\.\(php\|js\|css\)" -exec sed -i 's/\/bitrix\/templates\//\/local\/templates\//g'  "{} "  \;

Søk basert på opprettelsestidspunkt

Finn og liste opp filer i hele filsystemet som har blitt endret i siste liten:

finn / -mmin -1 -print

Finn og liste opp filer i hele filsystemet som har blitt endret for mer enn 31 dager siden:

finn / -mtime +31 -print

Søk etter filstørrelse

Finn og lister filer i hele filsystemet hvis størrelse er større enn 100 MB:

finn / -størrelse +100M -print

Finne filer som eies av en spesifikk bruker

I dette eksemplet utføres søket på filer som eies av en bruker som heter ilya

finne. -bruker ilya

Søke etter filer med en dybdegrense

Søkedybden er relativt til katalogen spesifisert i kommandoargumentet.

Begynner å søke i mappen /var/www, men ikke dypere /var/www/*/*/*/*.

finn /var/www -maxdepth 4 -navn 'restore.php'

Søk etter filer ved å liste opp kataloger.

Søker etter filer i de angitte katalogene.

finn /var/spool/postfix/ { deferred,active,maildrop,incoming } / -type f

Søk etter filer etter maske med unntak.

Ser etter php-filer i gjeldende katalog, unntatt index.php

finne. -navn "*.php"  ! -navn "index.php"

Slett en fil rekursivt fra gjeldende katalog, til en gitt dybde.

Sletter alle filer restore.phpfra gjeldende katalog opp til 4 nestenivåer i forhold til kommandolinjeargumentet

Begynner å søke i mappe /var/www, men ikke dypere /var/www/*/*/*/*og sletter alle filer som ble restore.phpfunnet.

finn /var/www -maxdepth 4 -navn 'restore.php' -exec rm -r {}  \;

Ignorerer feil

Hvis det oppstår en feil under søket (det er for eksempel ingen lesetilgang fra katalogen), blir utgangen av kommandoen mindre informativ. Omdiriger STDERR-utdata til /dev/null .

finn / -navn 'secret.keys' -print 2 >/dev/null

Du kan også bruke ett av følgende alternativer:

finn / -navn   "navn på fil som skal søkes"  |& grep -v 'Permission denied'
finn / -navn   "navnet på filen du leter etter"  |& grep -v 'Permission denied'

Lenker