denne vejledning fokuserer på, hvordan man finder filer på Linu. ved hjælp af find og find kommandoen.
som systemadministrator er det en meget almindelig opgave at søge efter en bestemt fil på dit filsystem.
det kan dog nogle gange være svært at finde filer på et Linu. – filsystem, især hvis du har snesevis af forskellige brugere.
Der er to kommandoer, der kan hjælpe dig med at nå dit mål : find og find.,
i denne tutorial skal vi se, hvordan vi bruger disse kommandoer effektivt, og hvordan de kan indstilles til at opnå det, vi leder efter.
Indholdsfortegnelse
Find Filer ved hjælp af kommandoen søg efter
Den første måde at finde og finde filer på en Linux host er at bruge kommandoen søg.,
Som standard find-kommando er tilgængelig på alle distributioner og det har følgende syntaks
$ find <options> <path> <expression>
Quick tip : har du nogle problemer med at huske, hvis sti eller udtryk, der kommer først?
Husk, at for grEP er udtryk sti, og find er det modsatte, så sti udtryk!
Find er en temmelig kraftig kommando, da den har langt flere muligheder end Find-kommandoen.
Her er alle mulighederne for find-funktionen på Linu..,
Find filer med find efter filnavn
den mest almindelige brug af find-funktionen er at finde filer med deres filnavne.
$ find <path> -name <pattern>
den største forskel mellem find og find, når det kommer til at søge efter filer, er, at find vil søge efter filnavne, mens locate vil lede efter stier til filen.hvis vi for eksempel går tilbage til runlevel-eksemplet, vi brugte før, er det sådan, hvordan man ser efter runlevel-filer ved hjælp af find-kommandoen.,
$ find / -name runlevel*
Hvad er “2> /dev/null” en del?
Jeg omdirigerede fejludgangen til/dev / null ved hjælp af outputomdirigering for at undgå fejlmeddelelser på konsollen.
Find filer ved hjælp af find efter filtype
Som vi tidligere diskuterede i vores artikel om hårde og bløde links, er filer tildelt filtyper, og det bruges som en måde at differentiere dem på.,
Her er en oversigt over alle de filtyper, der bruges på Linu..
- f : en standard fil
- d : en mappe eller et bibliotek
- l : en symbolsk lænke eller soft link
- b : blok-enheder (såsom en harddisk, for eksempel)
- c : karakter-enheder (serielle porte, lydkort)
- s : navngivne pipe
- s : socket
Kende alle de filtyper, du er nu i stand til at søge efter filer efter type med find-kommando.
$ find <path> -type <filetype>
for eksempel, hvis vi søger efter alle de symbolske links på værten, udsender vi følgende kommando.,
$ find / -type l
parametre kan kombineres, for eksempel hvis jeg leder efter alle symbolske links, hvis filnavne slutter med “.service ” (for at isolere alle systemd-tjenester for eksempel), ville jeg køre følgende kommando.
$ find / -type l -name *.service
Find filer ved hjælp af et mønster (for udvidelser)
på samme måde til at finde den kommando, du er i stand til at finde filer på Linux ved hjælp af et mønster.
som en påmindelse, et mønster er en streng, der omfatter globbing tegn (såsom*,?,, eller intervaller).
denne mulighed er især, når du forsøger at finde filer, der er givet en udvidelse, for eksempel Javascript-filer.
for At finde filer på Linux ved hjælp af et mønster, kør følgende kommando
$ find <path> -name ".<extension>"
$ find / -name "*.js"
Filer på Linux af ejeren
nogle gange, du ønsker at isolere filer, der er oprettet af en bestemt bruger.
Når du sletter en bruger på din vært, kan du f.eks. slette alle filer, der er tilknyttet denne bruger.,
Nogle gange opretter brugere filer ud af deres hjemmekatalog, og sletning af en brugerhjemmekatalog er ikke tilstrækkelig af sig selv.
Som en konsekvens, at finde filer, der er oprettet af en bestemt bruger på Linux, skal du køre følgende kommando
$ find <path> -user <user>
For eksempel, for at finde alle filer, der ejes af “john” på min vært, jeg vil køre den med følgende kommando.
$ find / -user john
hvad Nu hvis jeg ønsker at slette alle filer, der ejes af john med en simpel kommando?,
det kan let opnås ved hjælp af Slet flag.
$ find / -user john -delete
Find filer på Linu.med tilladelser
Ved hjælp af find-kommandoen kan du også finde og finde filer, der har visse tilladelser på din vært.
$ find <path> -perm <permissions>
som en påmindelse er her, hvordan filtilladelser fungerer på Linu..
for at finde alle filer, der har fulde tilladelser (a 777 givet den binære notation), kan du køre følgende kommando.,
$ find / -perm 777
det kan være ganske praktisk, hvis du af sikkerhedsmæssige årsager ønsker at inspicere, om der ikke er konfigureret filer med fulde tilladelser på dit system.
Find filer med at finde ud af størrelse
en Anden meget praktisk måde at finde og finde filer på Linux er at finde på find-kommando med størrelsen mulighed.størrelsesindstillingen giver dig mulighed for at søge efter filer, der er nøjagtigt den størrelse, du angiver, større end en bestemt størrelse eller lavere end en bestemt størrelse.,
for At søge efter filer efter størrelse, skal du bruge følgende kommando
$ find <path> -size <size>
størrelsen er defineret af de følgende præfikser :
- c: bytes
- b: 512-byte blokke
- k: Kilobyte
- M: Megabyte
- G: Gigabyte
Du kan angive et “+” hvis du er på udkig efter filer, der er større end den angivne størrelse.,
For eksempel, for at finde filer, der er større end 1 GB på dit system, skal du køre følgende kommando
$ find / -size +1G
for At finde filer, der er lavere end 10 Mb på dit system, skal du køre følgende kommando
$ find / -size -10M
Endelig, for at søge efter filer, der er præcis den størrelse, der er angivet i forespørgslen, du bør ikke tilføje plus eller minus præfikser til den kommando.
$ find / -size 1024k
den netop definerede kommando finder alle filer, der er nøjagtigt 1024 Kbs i størrelse på din vært.,
Find filer på Linu.efter ændringsdato
Ved hjælp af find kan du også finde filer, der har fået en ændringsdato, nylig eller ej.
denne kommando er meget praktisk og bruges ganske ofte af systemadministratorer til at finde filer eller mapper, der for nylig er blevet ændret.
for At søge efter filer ved hjælp af finde ved ændring af dato, skal du køre følgende kommando
$ find <path> -mtime <time>
Hvor tid repræsenterer de filer ændret 24*<tid> timer siden.
som følge heraf udtrykkes tiden i dage.,
på samme måde som størrelsen mulighed, kan du tilføje en “plus” eller et “minus” operatør til tid til at se for filer, der er ændret mere end <tid> dage siden, eller mindre end <tid> dage siden.for eksempel for at søge efter filer, der er ændret nøjagtigt for 3 timer siden, kører du følgende kommando.,
$ find / -mtime 3
for At finde filer, der er ændret mere end en uge siden, skal du køre følgende kommando
$ find / -mtime +7
for At finde filer, der er ændret mindre end to dage siden, vil du køre følgende kommando
$ find / -mtime -2
Find filer med dynamisk dybde
Som du sikkert har bemærket, har siden begyndelsen af denne vejledning, vi giver eksempler på filer søgninger starter fra rodmappen.
som følge heraf gennemses alle mapper rekursivt.,
Vi kan dog begrænse antallet af mapper rekursivt rejst fra en mappe, Dette kaldes dybden.
for at begrænse filsøgninger til en given dybde, kør følgende forespørgsel
$ find <path> -maxdepth <depth>
som et eksempel, her er hvordan du kan begrænse filsøgninger til den aktuelle mappe, uden børn mapper bliver gennemset.
$ find / -maxdepth 1
Du kan naturligvis kombinere denne kommando med navnet flag for at søge efter filer med et bestemt navn i den aktuelle mappe.,
$ find . -maxdepth 1 -name *.tar
Sammenkædning finde med -exec
I nogle tilfælde, du kan finde nyttige til at kæde finde kommandoen med exec en.
e .ec-indstillingen kan bruges til at kæde flere kommandoer sammen : at tage resultatet af den første som et input af den anden.,vil finde alle filer ændret for mindre end et minut siden
$ find /home/user -mmin -1./file1
lad os nu sige, at du vil slette alle filer, der blev ændret for mindre end et minut siden.
Du kan kæde find-kommandoen med indstillingen-e .ec ved hjælp af denne syntaks.
$ find /home/user -mmin -1 -exec echo rm -f '{}' \;
Vi naturligvis først “echo” de resultater, som vi ønsker at sikre, at vi sletter de rigtige filer.,
Når du er klar til at slette disse filer, skal du blot fjerne echo-kommandoen.
$ find /home/user -mmin -1 -exec rm -f '{}' \;
Find Filer på Linux ved hjælp af Locate kommandoen
en Anden god måde at finde og finde filer på Linux er at bruge locate kommandoen.
Forudsætninger
Hvis locate kommandoen ikke er tilgængelig på dit system, sørg for at læse de næste afsnit for at få lokalisere, der kører på dit system.,
A – installation af Locate på Apt-og RPM-baserede distributioner
for at installere locate skal du bruge sudo-rettigheder på din Linu. – vært.
for at kontrollere, om locate er installeret på din vært, skal du køre locate-kommandoen på kommandolinjen.,
$ locate
Hvis du finde, der er installeret på din computer, det vil forvente et udtryk for, at der leveres
Hvis du finde, er ikke installeret på din vært, en fejl, vises en meddelelse
for At installere finde på Ubuntu 18.04-og Debian-10, skal du køre følgende kommando.,
$ sudo apt-get install mlocate
tilsvarende, hvis du er på en CentOS eller Fedora-baseret distribution, skal du køre følgende kommando for at installere Find.
$ sudo yum install mlocate
B – opdatering af din mlocate-database
Find-funktionen fungerer med en lokal database, der er gemt på dit filsystem, der gemmer hvert enkelt filnavn på din vært.
Når du udfører en Find-kommando, vil find søge i databasen udarbejdet af updatedb for den fil, du søger efter.med jævne mellemrum opdaterer et cron-job mlocate.db fil for dig at kigge efter de seneste poster.,
databasen er placeret på/var/lib/mlocate / mlocate.dB som standard og updatedb konfigurationsfilen er gemt på / etc / updatedb.conf.for nu kan du forlade standardindstillingerne og køre en simpel updatedb-kommando, så din database kan opdateres.
$ sudo updatedb
Find filer er angivet et navn, mønster
Den mest grundlæggende måde at finde filer på Linux er at give et mønster til find-kommando.,
som standard er syntaksen for locate-kommandoen den følgende
$ locate ... ...
Hvis du leder efter en given konfigurationsfil på dit system, er en nem måde at finde den på at give sit komplette filnavn til locate-kommandoen.
$ locate updatedb.conf
Som du kan se, locate kommandoen er tilbage den komplette stier til den fil, jeg leder efter.,
Find filer i begrænsede mapper
Nogle gange har du muligvis ikke adgang til nogle mapper på dit system.
som følge heraf kan du ikke finde de filer, der findes i den.
lad os tage eksemplet på en forbudt mappe, der indeholder en fil med navnet “begrænset fil”.
for At finde filer, der ligger på beskyttede mapper, du er nødt til at køre locate kommandoen sudo rettigheder.,
$ sudo locate restricted-file
Find filer ved hjælp af et mønster
ved Hjælp af locate kommandoen, kan du give “mønstre” i form af globbing tegn.
Globbing tegn, også kaldet jokertegn, er tegn, der bruges til at matche en eller flere poster med et forenklet udtryk.
den mest populære er”*”, der matcher ethvert tegn inklusive ingen.
Her er et resum table tabel for globbing tegn og deres funktioner.,6934f1″>
ab
cab
runlevel
runlevel1, runlevel2, runlevel6
As an example, here’s a way to locate all text files on your system.,
$ locate *.txt
Find filer ved hjælp af et regulært udtryk
Som anført i den europæiske unions man-siden for at finde, kan de finde kommandoen accepterer et mønster som et input.
det betyder, at du er i stand til at give et regulært udtryk til Find-kommandoen.
for at finde og finde filer, der har fået en rege., skal du bruge indstillingen –rege. til kommandoen Find.,
$ locate --regex <regex>
for eksempel for at isolere alle filer, der starter med runlevel efterfulgt af et tal, kører du følgende kommando.
$ locate --regex runlevel+
Når du bruger regulære udtryk, der er et vigtigt punkt, som du bør være opmærksom på ved placering af filer.
Find-kommandoen leder efter stier til filer i dens lokale database.,
som følge heraf skal du være opmærksom på, at dit regulære udtryk skal matche stien til filen og ikke filnavnet alene, når du søger efter filer.leder efter filer, der starter med” Kør”, vil ingen resultater ikke blive returneret, da stien til filen starter med”/usr”.
Find filer ved hjælp af store og små bogstaver option
Når du søger efter filer på dit filsystem, kan du ikke være sikker på, om den måde, en given fil er opkaldt efter.,
Var det skrevet med store eller små bogstaver? Indeholder den overhovedet store bogstaver?
Hvis du vil finde og finde filer ved hjælp af en case ufølsom mulighed, skal du tilføje-i-indstillingen til din Find-kommando.,
$ locate -i <file_pattern>
Søg efter filer med indhold ved hjælp af grep
I nogle tilfælde, kan du være interesseret i at søge efter filer, der passer på et bestemt ord i sætningen, der er placeret INDE i filen.dette kan f.eks. ske, hvis du forsøger at finde filen, der indeholder specifikke loghændelser.,
Den første måde at søge efter filer, der passer på et bestemt ord, er ved at bruge grep kommandoen
$ grep -r <pattern> <path>
Bemærk : glem ikke det “-r” mulighed, hvis du søger filer gennem hele mapper.
For eksempel., hvis du søger efter alle de filer, der har “fejl” i deres indhold, der ligger i din home mappe, skal du skrive
$ grep -r error /home/user
I nogle tilfælde, du ønsker måske at finde filer, der er givet et regulært udtryk.
for at finde filer ved hjælp af et regulært udtryk skal du bruge indstillingen “-e”.,
$ grep -r -E <expression> <path>
Lad os sige, for eksempel, at man ønsker at finde den fil, der matcher ‘abc’ mønster på et af dine filer, ville du skrive
$ grep -r -E "abc.*" --color /home/user
Bemærk : farve-indstillingen er brugt for at fremhæve kampe bruge grep kommandoen.,
Find filer ved hjælp af hvilken
en Anden god måde at finde filer på Linux er at bruge den som kommando.
hvilken kommando bruges til at lokalisere de filer, der er knyttet til en bestemt kommando.
dette kan blive meget praktisk, når du ikke ved, hvor du har gemt dine binære filer til en kommando, eller hvis du har brug for at finde en kommando for at føje den til din sti.,
$ which <command>
For eksempel for at søge efter filer, der er knyttet til “ls” – kommando, du vil indtaste
$ which ls/usr/bin/ls
Som du kan se, får du den fulde sti til filen.
Find binære filer ved hjælp af whereis
på samme måde, det er helt muligt at søge efter filer ved hjælp af kommandoen whereis.
kommandoen “wherehereis” kan ses som et supersæt af kommandoen “hvilken”: “wherehereis” giver information om navnet på kommandoen, filplaceringen samt placeringen af manualsiderne.,
for at udføre wherehereis skal du blot skrive “wherehereis” og tilføje navnet på din kommando.
$ whereis lsls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
temmelig praktisk!
konklusion
i dagens tutorial lærte du, hvordan du kan finde og finde filer på Linu.ved hjælp af to vigtige kommandoer : find og find.
selvom indstillingen blev præsenteret individuelt, skal du huske, at de kan kombineres for at kunne angive endnu flere filer, du leder efter.
som altid, hvis du er interesseret i Linu. – systemadministration, har vi et komplet afsnit dedikeret til Linu. på vores hjemmeside.,
As always, here is a short video on the subject in case you prefer Youtube videos.