Finne
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 kommandols -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.-mtimeer 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
find(1)- man -side for GNU/Linux- brukerkommandoer (engelsk) (engelsk)
- "How to catch broken links" (utilgjengelig lenke) - bruk finn for å finne alle ødelagte lenker. (russisk)
- Finne filer i Linux - ulike eksempler på bruk av find-kommandoen (rus.)