logo

Find kommando i Linux/Unix med eksempler

Find kommandoen hjælper os med at finde en bestemt fil i en mappe. Det bruges til at finde listen over filer for de forskellige betingelser som tilladelse, brugerejerskab, ændring, dato/tid, størrelse og mere.

I Unix-lignende og andre operativsystemer er find-kommandoen et kommandolinjeværktøj, der finder filer på basis af nogle få brugerspecificerede formater og enten udskriver alle matchede objekters stinavn eller, hvis andre handlinger anmodes om, implementerer denne handling på alle matchede objekter.

Den starter en søgning fra en ønsket sted at starte, og derefter krydser den rekursivt mapperne (knuderne) i en hierarkisk struktur (generelt et træ). Find kommandoen kan søge og krydse fra forskellige filpartitionssystemer, der tilhører en enkelt eller flere lagerenheder under startmappen.

Søgeformatet indeholder et mønster til at matche med filnavnet eller tidsintervallet for at matche mod ændringstidspunktet eller filadgangstiden. Find kommandoen giver som standard en liste over hver fil under den aktuelle arbejdsmappe. Brugere kan dog begrænse søgningen til et ønsket maksimumniveau på startbiblioteket.

De tilknyttede lokaliseringsprogrammer anvender en indekseret fildatabase hentet fra fine-kommandoen for at give en hurtigere teknik til at søge i hele filsystemet efter navn.

Find-værktøjet kommer som standard med det meste af Linux distros , så vi behøver ikke installere nogen ekstra pakke. Det er en af ​​de mest essentielle og brugte kommandoer Linux system.

 find 

De to muligheder bestemmer, hvordan find skal overveje symbolske links. Standardnaturen er aldrig at forfølge symbolske links. Flaget, dvs. -L , vil føre til at forfølge symbolske links. Flaget, dvs. -H , vil bare forfølge symbolske links, mens du fortsætter med kommandolinjeargumenterne. Flagene er nævnt i POSIX-standarden for find-kommandoen. En grundlæggende udvidelse er et flag, dvs. -P , for eksplicit at deaktivere det følgende symbollink.

I det mindste skal en sti forudse udtrykket. Find-kommandoen kan internt fortolke jokertegn, og kommandoer skal omhyggeligt citeres for at håndtere shell-globing.

Udtrykskomponenter er isoleret af kommandolinjeargumentgrænsen, generelt angivet som mellemrum i shell-syntaksen. De betragtes fra venstre side til højre side. De kan omfatte logiske komponenter som OR og AND samt prædikater (handlinger og filtre). GNU-fund indeholder flere andre funktioner, der ikke er nævnt af POSIX.

Følgende symboler bruges til at angive biblioteket:

(.) : For det aktuelle biblioteksnavn

(/) : Til rodmappen

Kort historie om Find-kommandoen

Find-kommandoen opstod i version 5 Unix som et element i Programmers arbejdsbænk projekt og blev specificeret af Dick Haight med cpio, som er udviklet til at kunne bruges sammen.

Oprindeligt blev GNU-implementeringen af ​​find-kommandoen specificeret af Erik Decker . Senere blev den udviklet af David MacKenzie, Tim Wood , og Jay Plett . Find-kommandoen er også blevet overført til IBM i OS.

prøv datastruktur

Prædikater

Udbredte primære produkter er:

    -navn mønster:Det kontrollerer, at filnavnet er det samme som det givne shell-glob-mønster eller ej.-type type:Den kontrollerer, at filen er en angivet type.-Print:Det giver altid den sande værdi. Den udskriver det aktuelle filnavn og en ny linje til stdout.-print0:Det giver altid den sande værdi. Den udskriver det aktuelle filnavn og et nul-tegn til stdout. Ikke påkrævet af POSIX.-exec-program [argument ...];:Det giver altid den sande værdi. Den udfører et program med de faste givne argumenter og den aktuelle filsti.-exec-program [argument ...] { } +:Det giver altid den sande værdi. Den udfører et program med de faste givne argumenter og så flere stier som muligt. For næsten hver implementering betyder andre {}-forekomster ekstra kopier af det givne navn (aspekt er ikke nødvendigt af POSIX).-ok program [argument ...];:Det er det samme som -exec, men vil returnere falsk eller sandt, hvis programmet giver 0.

Find standarder til at implementere -print, hvis betingelserne er sande, hvis udtrykket ikke bruger nogen af ​​-ok, -exec, -print eller -print0.

Operatører

Operatører forbedrer find-kommandoudtrykkene. De er nævnt i rækkefølge efter faldende forrang:

    (udtr.):Denne operatør kan fremtvinge forrang.! udtr.:Hvis expr returnerer falsk, returnerer det sandt.
  • udtr1 udtr2 (eller udtr1 -a udtr2: OG. udtr2 evalueres ikke, hvis udtr1 er falsk.
  • udtr1 -o udtr2 : ELLER. udtr2 evalueres ikke, hvis udtr1 er sandt.

Eksempler på find-kommandoen

Lad os se følgende eksempler på find-kommandoen:

Find filer efter navn

Vi kan søge i alle filer, der ender med filtypenavnet '.txt'. For at gøre det skal du udføre kommandoen nedenfor:

 find . -name '*.txt' 

Ovenstående kommando viser alle tekstfilerne fra den aktuelle arbejdsmappe. Overvej nedenstående output:

Linux Find

Fra ovenstående output er alle filer med filtypenavnet '.txt' listet med find-kommandoen.

Find filer efter type

Parameteren '-type' bruges til at angive filtypen.

java oprettelsesliste

Nogle af filtyperne er som følger:

  • f: almindelig fil
  • d: bibliotek
  • l: symbolske links
  • c: tegnenheder
  • b: blokere enheder

Overvej nedenstående kommando:

 find . -type d -name '*.bak' 

Ovenstående kommando vil liste alle mapper med '.bak'-udvidelsen. Overvej nedenstående output:

Linux Find

Fra ovenstående output, kommandoen 'find . -type d -navn '*.bak' viser alle mapper, der slutter med '.bak'.

Find nyere filer

Parameteren '-newer' hjælper med at søge efter filer, der er nyere end den nævnte fil. Overvej nedenstående kommando:

 find . -newer msg.txt 

Ovenstående kommando vil vise alle de filer, der er nyere end 'msg.txt' fra den aktuelle arbejdsmappe. Overvej nedenstående output:

Linux Find

Fra ovenstående output er alle de viste filer nyere end 'msg.txt'-filen.

Find og slet en fil

Muligheden '-delete' bruges til at slette en bestemt fil. Vi skal være meget forsigtige, mens vi bruger denne kommando, fordi der ikke er nogen fortryd-mulighed, hvis den en gang er udført. Overvej nedenstående kommando:

 find . -name Demo.txt -delete 

Ovenstående kommando vil slette filen 'Demo.txt' fra den aktuelle arbejdsmappe. Overvej nedenstående output:

Linux Find

Find en mappe

Muligheden 'type -d' bruges til at finde en mappe. Overvej nedenstående kommando:

 find . type -depth -name Newdirectory 

Ovenstående kommando vil finde 'Newdirectory'-placeringen. Overvej nedenstående output:

Linux Find

Find filer efter ændringstid

Muligheden '-mtime', efterfulgt af antallet af dage, bruges til at finde filerne ved ændring. Antallet af dage kan være positivt eller negativt. Den negative værdi vil blive brugt for mindre end ligesom -1 bruges for den sidste dag, og på samme måde vil +1 finde filen for mere end én dag siden. Overvej nedenstående kommando:

 find ./Newdirectory -mtime -1 

Ovenstående kommando vil finde de filer, der er ændret inden for den sidste dag. Overvej nedenstående output:

betinget operator i java
Linux Find

Find filer med tilladelse

Muligheden '-perm' bruges til at finde filer med tilladelse. Udfør find-kommandoen med '-perm'-indstillingen og send den påkrævede værdi. Overvej nedenstående kommando:

 find ./ -perm 777 

Ovenstående kommando viser filerne fra den angivne mappe, som alle kunne læse, skrive og udføre.

Find og erstat filer

For at finde og erstatte filer, skal vi kombinere find-kommandoen med sed-kommandoen. For at arbejde på filer skal du bruge '-exec'-indstillingen med find-kommandoen. Overvej nedenstående kommando:

 find ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} ; 

fra ovenstående kommando vil den angivne forekomst blive erstattet. Overvej nedenstående output:

Linux Find

Find tekst i flere filer

Vi kan lave en anden kombination af find-kommandoen med grep-kommandoen for at finde teksten fra de forskellige filer. Overvej nedenstående kommando:

 find ./Newdirectory -type f -name '*.txt' -exec grep 'demo' {} ; 

Ovenstående kommando vil finde linjerne, der indeholder teksten 'demo' fra alle tekstfilerne i mappen 'Newdirectory'. Overvej nedenstående output:

Linux Find

Fra ovenstående output kan vi se linjerne, hvor teksten 'demo' er blevet vist.

Søg i hver mappe

 $ find / -name file1 -type f -print 

Ovenstående kommando finder alle mapper til en almindelig fil, hvis titel er fil1 og udskriver den på skærmen. Generelt er det ikke en god idé at søge efter filer på denne måde. Det kan tage et godt stykke tid. Så det er bedst at nævne mappen. Nogle få operativsystemer kan montere filsystemer (dynamiske), der ikke er gunstige for find-kommandoen. Mere komplicerede filnavne, der indeholder karakterer, der er unikke for skallen, skal muligvis lukkes i enkelte anførselstegn.