Android

Sådan finder du filer i Linux ved hjælp af kommandolinjen

Connect Wi-Fi with command | Windows 10/8/7

Connect Wi-Fi with command | Windows 10/8/7

Indholdsfortegnelse:

Anonim

find kommandoen er et af de mest kraftfulde værktøjer i Linux-systemadministratorens arsenal. Det søger efter filer og mapper i et kataloghierarki baseret på et brugerudtrykt udtryk og kan udføre brugerspecificeret handling på hver matchede fil.

Du kan bruge find kommandoen til at søge efter filer og mapper baseret på deres tilladelser, type, dato, ejerskab, størrelse og mere. Det kan også bruges i kombination med andre værktøjer såsom grep eller sed .

Linux find kommandosyntax

Den generelle syntaks for find kommandoen er som følger:

find

  • Funktionen attribut styrer behandlingen af ​​de symboliske links, fejlfindingsindstillinger og optimeringsmetoden. Attributten path… definerer startmappen eller mapper, hvor find vil søge i filerne. Udtryksattributten består af indstillinger, søgemønstre og handlinger adskilt af operatører.

For at søge efter filer i et bibliotek skal brugeren, der påberoper søgekommandoen, have læsetilladelser på det bibliotek.

Lad os se på følgende eksempel:

find -L /var/www -name "*.js"

  • Indstillingen -L (indstillinger) fortæller find kommandoen for at følge symboliske links.The /var/www (sti…) specificerer det bibliotek, der skal søges. (Udtrykket) -name "*.js fortæller find til søgefiler, der slutter med .js (JavaScript-filer).

Find filer efter navn

At finde filer efter navn er sandsynligvis den mest almindelige brug af find kommandoen. For at finde en fil efter dens -name fulgte indstillingen -name navnet på den fil, du søger efter.

For at søge efter en fil med navnet document.pdf i mappen /home/linuxize ville du f.eks. Bruge følgende kommando:

find /home/linuxize -type f -name document.pdf

Hvis du vil køre en -iname søgning, skal du ændre indstillingen -name med -iname :

find /home/linuxize -type f -iname document.pdf

Kommandoen ovenfor matcher “Document.pdf”, “DOCUMENT.pdf”..etc.

Find filer efter filtypenavn

Søgning efter filer efter filtypenavn er det samme som at søge efter filer efter navn. For eksempel at finde alle filer, der slutter med .log.gz i /var/log/nginx biblioteket, kan du bruge:

find /var/log/nginx -type f -name '*.log.gz'

Det er vigtigt at nævne, at når du bruger jokertegnet, skal du enten citere mønsteret eller undslippe stjerne * -symbolet med tilbageslag \ så det ikke fortolkes af skallen.

For at finde alle filer, der ikke matcher regex *.log.gz , kan du bruge indstillingen *.log.gz . For eksempel at finde alle filer, der ikke ender i *.log.gz , ville du bruge:

find /var/log/nginx -type f -not -name '*.log.gz'

Find filer efter type

Nogle gange er du muligvis nødt til at søge efter specifikke filtyper, såsom normale filer, mapper eller symlinks. I Linux er alt en fil.

Hvis du vil søge efter filer baseret på deres type, skal du bruge indstillingen -type og en af ​​følgende deskriptorer til at specificere filtypen:

  • f : en almindelig fil d : bibliotek l : symbolsk link c : tegn enheder b : blok enheder p : navngivet pipe (FIFO) s : socket

For at finde alle kataloger i det aktuelle arbejdsmappe vil du f.eks. Bruge:

find. -type d

Det almindelige eksempel ville være at rekursivt ændre webstedsfiltilladelser til 644 og katalogtilladelser til 755 ved hjælp af kommandoen chmod :

find /var/www/my_website -type d -exec chmod 0755 {} ; find /var/www/my_website -type f -exec chmod 0644 {} ;

Find filer efter størrelse

Hvis du vil finde filer baseret på filstørrelsen, skal du passere parameteren -størrelse sammen med størrelseskriterierne. Du kan bruge følgende suffikser til at specificere filstørrelsen:

  • b : 512-byte-blokke (standard) c : bytes w : to-byte-ord k : Kilobytes M : Megabyte G : Gigabyte

Følgende kommando finder alle filer med nøjagtigt 1024 bytes inde i /tmp biblioteket:

find /tmp -type f -size 1024c

find kommandoen giver dig også mulighed for at søge efter filer, der er større eller mindre end en specificeret størrelse.

I det følgende eksempel søger vi efter alle filer, der er mindre end 1MB i det aktuelle arbejdsmappe. Bemærk minus - symbolet før størrelsesværdien:

find. -type f -size -1M

find. -type f -size +1M

Du kan endda søge efter filer inden for et størrelsesområde. Følgende kommando finder alle filer mellem 1 og 2MB :

find. -type f -size +1M -size 21M

Find filer efter ændringsdato

find kommandoen kan også søge efter filer baseret på deres sidste ændring, adgang eller ændringstid.

Samme som når du søger efter størrelse, skal du bruge plus- og minus-symbolerne til "større end" eller "mindre end".

Lad os sige, at du for et par dage siden ændrede en af ​​dovecot-konfigurationsfilerne, men du har glemt hvilken. Du kan nemt filtrere alle filer under mappen /etc/dovecot/conf.d der slutter med .conf og er blevet ændret i de sidste fem dage med:

find /etc/dovecot/conf.d -name "*.conf" -mtime 5

Her er et andet eksempel på filtrering af filer baseret på ændringsdatoen ved hjælp af indstillingen -daystart . Kommandoen nedenfor viser alle filer i /home biblioteket, der blev ændret for 30 eller flere dage siden:

find /home -mtime +30 -daystart

Find filer efter tilladelser

-perm giver dig mulighed for at søge efter filer baseret på filtilladelser.

For eksempel at finde alle filer med tilladelser på nøjagtigt 775 i mappen /var/www/html , ville du bruge:

find /var/www/html -perm 644

Du kan præfikse den numeriske tilstand med minus - eller skråstreg / .

Når skråstreg / bruges som præfiks, skal mindst en kategori (bruger, gruppe eller andre) mindst have de respektive bits indstillet for at en fil skal matche.

Overvej følgende eksempel på kommandoen:

find. -perm /444

Ovenstående kommando vil matche alle filerne med læsetilladelser, der er indstillet til enten bruger, gruppe eller andre.

Hvis minus - bruges som præfiks, skal filen, der matcher mindst de angivne bits, indstilles. Følgende kommando søger efter filer, der har læse- og skrivetilladelse for ejeren og gruppen og kan læses af andre brugere:

find. -perm -664

Find filer efter ejer

For at finde filer, der ejes af en bestemt bruger eller gruppe, skal du bruge valgmulighederne -user og -group .

For eksempel at søge efter alle filer og mapper, der ejes af brugeren linuxize , kører du:

find / -user linuxize

Her er et ægte eksempel. Lad os sige, at du vil finde alle filer, der ejes af brugerens www-data og ændre ejerskabet af de matchede filer fra www-data til nginx :

find / -user www-data -type f -exec chown nginx {} ;

Find og slet filer

For at slette alle matchende filer skal du tilføje indstillingen -delete til slutningen af -delete .

Sørg for, at du kun bruger denne indstilling, når du er sikker på, at resultatet stemmer overens med de filer, du vil slette. Det er altid en god ide at udskrive de matchede filer, før du bruger indstillingen -delete .

For eksempel at slette alle filer, der slutter med .temp fra /var/log/ du vil bruge:

find /var/log/ -name `*.temp` -delete Brug indstillingen -delete med ekstrem forsigtighed. Find-kommandolinjen evalueres som et udtryk, og hvis du først tilføjer indstillingen -delete , vil kommandoen slette alt under de startpunkter, du har angivet.

Når det kommer til mapper, kan find kun slette tomme mapper, som rmdir .

Konklusion

Vi har vist dig, hvordan du bruger find kommandoen med forskellige indstillinger og kriterier.

Denne artikel skal give dig en grundlæggende forståelse af, hvordan du finder filer på dine Linux-systemer. Du kan også besøge find man-siden og læse om alle andre magtfulde indstillinger i find kommandoen.

find terminal