Finde

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 23. januar 2020; checks kræver 7 redigeringer .

find - et værktøj til at søge efter filer efter navn og andre egenskaber, brugt i UNIX - lignende operativsystemer . Kan søge i en eller flere mapper ved hjælp af kriterier specificeret af brugeren . findReturnerer alle filer i arbejdsmappen som standard . Desuden findgiver det brugeren mulighed for at anvende visse handlinger på alle fundne filer. Regulære udtryk understøttes også . For at søge efter filer efter indhold skal du bruge grep -værktøjet .

Liste over nøgler


Eksempler

Søg i den aktuelle mappe

Find alle filer i de aktuelle og underordnede mapper, der starter med min .

Bemærk venligst: med hensyn til unix er alt, inklusive mapper, en fil .

finde. -navn 'min*'

For kun at søge efter filnavne skal du bruge en ekstra mulighed-type f 

finde. -navn 'min*' -type f

Søg i en bestemt mappe

Find alle filer i rod- og underbibliotekerne, der starter med min .

At søge i rodmappen svarer til at søge på hele computeren.

find / -navn 'min*'

Søgning efter filer i mapper /usr/local/manog/opt/local/man

find /usr/local/man /opt/local/man -navn 'min*'

Søger efter flere filnavne

Find alle filer i det aktuelle og underordnede bibliotek, der starter med my eller qu .

Bemærk, at som standard er alle argumenter forbundet ved hjælp af den logiske og (indstilling -a, fra engelsk  og ). Hvis du har brug for at kombinere flere argumenter med en logisk eller  - brug muligheden -o, fra engelsk.  eller .

finde. \( -navn "min*" -o -navn "qu*" \) -print

Søg efter flere filtyper ved hjælp af regulære udtryk

Find alle filer i de aktuelle og underordnede mapper, hvis udvidelse matcher de angivne.

Denne søgning udføres ved hjælp af regulære udtryk .

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

Det foregående eksempel kan også skrives ved hjælp af regulære udtryk

finde. -type f -regex "\(min\|qu\).*"

Kommandoudførelse

Indstillingen -exec udfører den kommando, der følger efter den, og erstatter {}den med den aktuelle fil. Find alle mapper under den angivne mappe og skift deres tilladelser med chmod kommandoen :

find /sti -type d -exec chmod 0755 {} \;

Indstillingen -exec er omkring 10 gange langsommere end at omdirigere output via xargs , så det anbefales at skrive denne kode sådan her:

find /sti -type d | xargs chmod 0755

Biblioteker med navne, der indeholder mellemrum, vil dog ikke blive behandlet med xargs-omdirigeringsmetoden, så du bør bruge den første mulighed, polstret:

find /sti -type d -exec chmod 0755 "{}" \;

Eller brug muligheden -print0og -0lad dig behandle argumenter, der indeholder mellemrum og anførselstegn:

find /sti -type d -print0 | xargs -0 chmod 0755

Søg efter alle php.ini-filer i den aktuelle mappe og erstat teksten i hver fundne fil ved hjælp af sed -kommandoen .

finde. -name 'php.ini' -exec sed -i 's/log_errors = Fra/log_errors = Til/g' "{}" \;

Kompleks søgning i flere typer filer og teksterstatninger i hver af dem, fra den aktuelle mappe og nedenfor.

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

Søg baseret på oprettelsestidspunkt

Find og skriv filer i hele filsystemet, der er blevet ændret i det sidste minut:

find / -mmin -1 -print

Find og liste filer i hele filsystemet, der er blevet ændret for mere end 31 dage siden:

find / -mtime +31 -print

Søg efter filstørrelse

Find og liste filer i hele filsystemet, hvis størrelse er større end 100 MB:

find / -størrelse +100M -print

Find filer, der ejes af en bestemt bruger

I dette eksempel udføres søgningen på filer, der ejes af en bruger ved navn ilya

finde. -bruger ilya

Søgning efter filer med en dybdebegrænsning

Søgedybden er i forhold til den mappe, der er angivet i kommandoargumentet.

Starter at søge i mappen /var/www, men ikke dybere /var/www/*/*/*/*.

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

Søg efter filer ved at liste mapper.

Søger efter filer i de angivne mapper.

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

Søg efter filer efter maske med en undtagelse.

Søger efter php-filer i den aktuelle mappe, undtagen index.php

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

Slet rekursivt en fil fra den aktuelle mappe til en given dybde.

Sletter alle filer restore.phpfra den aktuelle mappe op til 4 indlejringsniveauer i forhold til kommandolinjeargumentet

Starter at søge i mappe /var/www, men ikke dybere /var/www/*/*/*/*og sletter alle restore.phpfundne filer.

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

Ignorerer fejl

Hvis der opstår en fejl under søgningen (f.eks. er der ingen læseadgang fra biblioteket), bliver udgangen af ​​kommandoen mindre informativ. Omdiriger STDERR-output til /dev/null .

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

Du kan også bruge en af ​​følgende muligheder:

find / -navn "navn på fil, der skal søges" |& grep -v 'Tilladelse nægtet' find / -name "navnet på den fil, du leder efter" |& grep -v 'Permission denied'

Links