Android

Kako pronaći datoteke u Linuxu pomoću naredbenog retka

From C to Python by Ross Rheingans-Yoo

From C to Python by Ross Rheingans-Yoo

Sadržaj:

Anonim

Naredba find jedan je od najmoćnijih alata u arsenalu administratora sustava Linux. Pretražuje datoteke i mape u hijerarhiji direktorija na temelju izraza koji je korisnik dodijeljen i može izvoditi radnju određenu korisnikom na svakoj podudarnoj datoteci.

Naredbu find možete koristiti za pretraživanje datoteka i mapa na temelju njihovih dozvola, vrste, datuma, vlasništva, veličine i više. Također se može koristiti u kombinaciji s drugim alatima kao što su grep ili sed .

Linux find naredbu Sintaksa

Opća sintaksa za naredbu find je sljedeća:

find

  • Atribut options kontrolira tretman simboličkih veza, opcija za uklanjanje pogrešaka i način optimizacije path… Atribut path… definira početnu mapu ili mape u kojima će pretraživati ​​datoteke. Atribut expression sastoji se od opcija, obrasca pretraživanja i radnje razdvojene od strane operatora.

Za pretraživanje datoteka u direktoriju, korisnik koji poziva naredbu find mora imati dozvole za čitanje u toj mapi.

Pogledajmo sljedeći primjer:

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

  • Opcija -L (opcije) nalaže naredbu find da slijedi simboličke veze. /var/www (put…) određuje direktorij koji će biti pretražen. (Izraz) -name "*.js govori find za pretraživanje datoteka koje završavaju sa .js (JavaScript datoteke).

Pronalaženje datoteka po imenu

Pronalaženje datoteka po imenu vjerojatno je najčešća upotreba naredbe find . Da biste datoteku pronašli prema njenom imenu, opcija -name slijedila je nazivu datoteke koju tražite.

Na primjer, za pretraživanje datoteke s nazivom document.pdf u direktoriju /home/linuxize upotrijebili biste sljedeću naredbu:

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

Da biste pokrenuli pretraživanje bez -iname slova, promijenite opciju -iname s -iname :

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

Gornja naredba odgovara "Document.pdf", "DOCUMENT.pdf"..etc.

Pronađite datoteke pomoću ekstenzije

Pretraživanje datoteka ekstenzijom isto je kao i pretraživanje datoteka po imenu. Na primjer, da biste pronašli sve datoteke koje završavaju s .log.gz unutar /var/log/nginx direktorija koji možete koristiti:

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

Važno je napomenuti da kada upotrebljavate zamjenski znak, morate ili navesti uzorak ili izbjeći simbol * sa zvjezdicom * sa nagibom \ da se ljuska ne interpretira.

Da biste pronašli sve datoteke koje ne odgovaraju *.log.gz možete koristiti opciju *.log.gz . Na primjer, da biste pronašli sve datoteke koje ne završavaju u *.log.gz koji biste koristili:

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

Pronađite datoteke prema vrsti

Ponekad ćete možda trebati potražiti određene vrste datoteka, poput uobičajenih datoteka, direktorija ili veza. U Linuxu je sve datoteka.

Za pretraživanje datoteka na temelju njihove vrste, koristite opciju -type i jedan od sljedećih deskriptora da odredite vrstu datoteke:

  • f : redovna datoteka d : direktorij l : simbolička veza c : uređaji s znakovima b : blok uređaja p : imenovana cijev (FIFO) s : utičnica

Na primjer, da biste pronašli sve direktorije u trenutnoj radnoj mapi, upotrijebili biste:

find. -type d

Uobičajeni je primjer rekurzivna promjena dopuštenja datoteke web stranice na 644 i dozvole direktorija na 755 pomoću naredbe chmod :

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

Pronađite datoteke prema veličini

Da biste pronašli datoteke na temelju veličine datoteke, proslijedite parametar-veličine zajedno s kriterijima veličine. Za određivanje veličine datoteke možete koristiti sljedeće sufikse:

  • b : 512-bajtni blokovi (zadano) c : bajtovi w : dvobajtne riječi k : Kilobajte M : Megabajti G : Gigabajti

Sljedeća naredba pronaći će sve datoteke od točno 1024 bajta unutar /tmp direktorija:

find /tmp -type f -size 1024c

Naredba za find također vam omogućuje pretraživanje datoteka većih ili manjih od određene veličine.

U sljedećem primjeru tražimo sve datoteke manje od 1MB unutar trenutne radne mape. Primijetite minus - simbol prije vrijednosti veličine:

find. -type f -size -1M

find. -type f -size +1M

Možete čak i pretraživati ​​datoteke unutar raspona veličine. Sljedeća naredba pronaći će sve datoteke između 1 i 2MB :

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

Pronađite datoteke prema datumu izmjene

Naredba za find također može pretraživati ​​datoteke na temelju njihove posljednje izmjene, pristupa ili promjene vremena.

Isto kao i kad pretražujete po veličini, upotrijebite simbole plus i minus za "veće od" ili "manje od".

Recimo da ste prije nekoliko dana izmijenili jednu od konfiguracijskih datoteka golubica, ali ste zaboravili koju. Sve datoteke možete lako filtrirati u /etc/dovecot/conf.d direktorijumu koji završava s .conf i modificirani su u posljednjih pet dana pomoću:

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

Evo još jednog primjera filtriranja datoteka na temelju datuma izmjene pomoću opcije -daystart . Naredba u nastavku popisat će sve datoteke u /home imeniku koje su izmijenjene prije 30 ili više dana:

find /home -mtime +30 -daystart

Pronalaženje datoteka s dozvolama

Opcija -perm omogućuje vam pretraživanje datoteka na temelju dozvola za datoteku.

Na primjer, da biste pronašli sve datoteke s dozvolama od točno 775 unutar /var/www/html direktorija, upotrijebili biste:

find /var/www/html -perm 644

Možete numerički način prefiksirati s minusom - ili kosom crtom / .

Kad se kosa crta / koristi kao prefiks, tada najmanje jedna kategorija (korisnik, grupa ili drugi) mora imati najmanje odgovarajuće bitove da bi se datoteka mogla podudarati.

Razmotrite sljedeću primjeru naredbe:

find. -perm /444

Gornja naredba odgovarat će svim datotekama s dozvolama za čitanje postavljenim bilo za korisnika, grupu ili druge.

Ako se kao prefiks koristi minus - tada se datoteka mora podudarati s barem navedenim bitovima. Sljedeća naredba će pretraživati ​​datoteke koje su vlasniku i grupi pročitali i dopustili pisanje i čitali ih drugi korisnici:

find. -perm -664

Pronalaženje datoteka od strane vlasnika

Da biste pronašli datoteke u vlasništvu određenog korisnika ili grupe, upotrijebite opcije -user i -group .

Na primjer, za pretraživanje svih datoteka i direktorija u vlasništvu korisnika linuxize pokrenuli biste:

find / -user linuxize

Evo primjera iz stvarnog svijeta. Recimo da želite pronaći sve datoteke u vlasništvu korisničkih www-data i promijeniti vlasništvo nad podudarnim datotekama iz www-data u nginx :

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

Pronalaženje i brisanje datoteka

Da biste izbrisali sve podudarajuće datoteke, dodajte opciju -delete na kraj izraza podudaranja.

Obavezno koristite ovu opciju samo kad ste sigurni da se rezultat podudara s datotekama koje želite izbrisati. Uvijek je dobra ideja ispisati podudarne datoteke prije nego što koristite opciju -delete .

Na primjer, za .temp svih datoteka koje završavaju .temp iz /var/log/ koju biste koristili:

find /var/log/ -name `*.temp` -delete Koristite -delete opciju s krajnjim oprezom. Naredbeni redak nalazi se procjenjuje kao izraz i ako prvo -delete opciju -delete , naredba će izbrisati sve ispod početnih točaka koje ste naveli.

Kad je riječ o direktorijima, find možete izbrisati samo prazne direktorije isto kao i rmdir .

Zaključak

Pokazali smo vam kako koristiti naredbu find s različitim opcijama i kriterijima.

Ovaj bi vam članak trebao dati temeljno razumijevanje kako locirati datoteke na svojim Linux sustavima. Također možete posjetiti stranicu find man i pročitati o svim drugim moćnim opcijama naredbe find .

pronaći terminal