Otkrivanje datoteka na Linuxu pomoću komande fd
Na Linux sistemima, fd
se ističe kao elegantna alternativa tradicionalnoj komandi find
. Sa svojim pojednostavljenim sintaksom, inteligentnim postavkama i ugrađenim logičkim ponašanjem, fd
nudi efikasniji način pretraživanja datoteka. Hajde da detaljnije istražimo njene mogućnosti.
Razlike između komandi fd i find
Komanda fd
nije zamišljena kao zamena za dugogodišnju komandu find
koja je prisutna na Linuxu od samih početaka. Umesto toga, fd
teži da na jednostavan način reši većinu uobičajenih slučajeva upotrebe komande find
, a često je i znatno brža. Možete pronaći poređenja performansi na GitHub stranici projekta.
fd
karakteriše izlaz u boji, sličan izlazu nekih ls
režima. Ona je rekurentna, ali po difoltu ne pretražuje skrivene direktorijume. Osim toga, fd
je svesna Git repozitorijuma i automatski ignoriše obrasce definisane u vašoj .gitignore
datoteci.
Podrazumevano, fd
ne razlikuje velika i mala slova. Međutim, ako vaš obrazac za pretragu sadrži veliko slovo, fd
prelazi u režim pretrage koji razlikuje velika i mala slova. Naravno, možete modifikovati podrazumevana ponašanja, ali u većini slučajeva ona rade u vašu korist.
Instalacija komande fd
Od verzije Ubuntu 19.04 (Disco Dingo), možete direktno instalirati fd
korišćenjem zvanično podržanog paketa putem apt-get
. Za starije verzije Ubuntu-a, uputstva za instalaciju potražite na GitHub stranici projekta.
Za instalaciju, koristite sledeću komandu:
sudo apt-get install fd-find
U Ubuntu-u, komanda se zove fdfind
da bi se izbegao konflikt imena sa drugim postojećim programom. Ukoliko želite da je koristite kao fd
, možete postaviti alias:
alias fd=fdfind
Da bi alias ostao trajan i dostupan nakon ponovnog pokretanja sistema, dodajte ga u vašu .bashrc
ili .bash_aliases
datoteku.
Za instalaciju na Fedori, koristite ovu komandu:
sudo dfn install fd-find
Na Manjaru, koristite sledeću komandu:
sudo pacman -Syu fd
fd nasuprot fdfind
Kako bismo izbegli zabunu, na našem test računaru sa Ubuntu-om koristimo podrazumevano ime komande, fdfind
. fd
i fdfind
su potpuno ista komanda, kao što ćete videti u sledećem primeru (ako zatražite od fdfind
da prikaže svoju verziju, ona sebe naziva „fd“):
fdfind --version
U daljem tekstu ćemo je zvati „fd“, ali ćemo u primerima koristiti Ubuntu-ov „fdfind“. Na drugim Linux distribucijama, možete koristiti „fd“ umesto „fdfind“ kako biste uštedeli nekoliko pritisaka na tasterima.
Jednostavne pretrage pomoću fd
Kada koristite fd
bez dodatnih opcija, ona se ponaša slično komandi ls
, s tim da po difoltu prikazuje datoteke i u poddirektorijumima.
Probajte sledeću komandu:
fdfind
Izlaz će se prikazati u različitim bojama, zavisno od tipa datoteke i direktorijuma.
Da biste pronašli datoteke određenog tipa, koristite opciju -e
(ekstenzija). Važno je napomenuti da ne morate unositi tačku pre ekstenzije, niti se razlikuju velika i mala slova.
Na primer, koristite sledeću komandu:
fdfind -e png
Sada su prikazane samo datoteke sa PNG slikama.
Da biste pretražili određenu datoteku, jednostavno unesite njeno ime u komandnoj liniji:
fdfind index.page
Datoteka je pronađena, čak i ako se nalazi u poddirektorijumu. Nije bilo potrebno reći komandi fd
da pretražuje rekurentno.
Da biste započeli pretragu u određenom direktorijumu, uključite putanju datoteke u komandnoj liniji. Na primer, sledeća komanda će pretražiti direktorijum „/etc“ u potrazi za datotekama koje u svom imenu sadrže „passwd“:
fdfind passwd /etc
Ovde tražimo sve C izvorne datoteke koje sadrže „coord“ u svom nazivu:
fdfind -e c coord
Pronađene su dve datoteke koje se podudaraju.
fd i Git
Git je izuzetno popularan sistem za kontrolu verzija izvornog koda. Ako koristite Git na svom računaru, verovatno koristite .gitignore
datoteke da kažete Gitu kojim datotekama treba da se bavi, a koje može da ignoriše. Po difoltu, fd
uzima u obzir postavke u vašim .gitignore
datotekama.
U ovom direktorijumu imamo Git repozitorijum i .gitignore
datoteku. Izvršimo sledeću komandu:
ls -adl .git*
Zatražimo od fd
da prikaže sve datoteke koje u svom imenu sadrže „coord“. Zatim ćemo ponoviti pretragu, ali ćemo koristiti opciju -I
(ne ignoriši). Ovo govori fd
da ignoriše postavke u .gitignore
datoteci i prijavi svaku datoteku koja se podudara.
Da bismo sve ovo uradili, koristimo sledeće komande:
fdfind coord
fdfind coord -I
Dve dodatne datoteke u drugom setu rezultata su objektne datoteke. One se kreiraju prilikom kompiliranja programa. Zatim ih koristi povezivač za kreiranje konačne izvršne verzije programa.
Programi za kontrolu verzija izvornog koda obično ignorišu objektne datoteke. One se regenerišu svaki put kada kompilirate program, tako da nije potrebno čuvati njihove kopije. Postoji unos u .gitignore
datoteci koji nalaže Gitu da ignoriše objektne datoteke, i po difoltu, fd
ih takođe ignoriše.
Opcija -I
(ne ignoriši) prisiljava fd
da vrati sve što pronađe, bez obzira na .gitignore
datoteku.
Tipovi datoteka i osetljivost na velika i mala slova
Možete zatražiti od fd
da traži direktorijume, datoteke (uključujući izvršne i prazne) i simboličke veze. To možete uraditi pomoću opcije -t
(tip), praćene jednim od sledećih slova:
f
: Datoteka.d
: Direktorijum.l
: Simbolička veza.x
: Izvršna datoteka.e
: Prazna datoteka.
Sledeća komanda traži direktorijum pod nazivom „images“:
fdfind -td images
Pronađen je jedan poddirektorijum koji odgovara kriterijumima.
Hajde da vidimo kako radi osetljivost na velika i mala slova kod obrazaca pretrage. Koristimo sledeće komande da bismo prvo tražili datoteke koje sadrže „geo“ u imenu, a zatim one koje sadrže „Geo“ u imenu:
fdfind -tf geo
fdfind -tf Geo
U prvoj komandi smo koristili obrazac za pretragu malim slovima, što je dovelo do toga da fd
radi u režimu koji ne razlikuje velika i mala slova. To znači da su i „Geo“ i „geo“ prihvatljiva podudaranja.
Druga komanda je sadržala veliko slovo, što je dovelo do toga da fd
radi u režimu koji razlikuje velika i mala slova. To znači da je samo „Geo“ važeće podudaranje.
Izvršavanje komandi
Komanda fd
vam omogućava da pokrenete drugu komandu i izvršite je nad svakom od pronađenih datoteka.
Recimo da znamo da postoji ZIP datoteka negde u našem stablu direktorijuma izvornog koda. Možemo je pronaći pomoću sledeće komande, koja traži datoteke sa ZIP ekstenzijom:
fdfinf -e zip
Sa opcijom -x
(exec), možete proslediti svaku pronađenu datoteku drugoj komandi na obradu. Na primer, možemo otkucati sledeću komandu da pozovemo unzip alat za raspakivanje ZIP datoteke („{}“ je mesto gde će se uneti pronađena datoteka):
fdfind -e zip -x unzip {}
Ovo će raspakovati datoteku u trenutnom radnom direktorijumu. Ako želimo da se raspakuje u direktorijum koji sadrži ZIP datoteku, možemo da upotrebimo jedan od sledećih čuvara mesta:
{}
: Puna putanja datoteke i naziv pronađene datoteke.{/}
: Ime pronađene datoteke.{//}
: Direktorijum koji sadrži pronađenu datoteku.{/.}
: Naziv pronađene datoteke, bez ekstenzije.
Da bi naša ZIP datoteka bila pronađena i raspakovana u direktorijumu u kojem se nalazi, možemo koristiti opciju unzip -d
(direktorijum) i proslediti čuvar mesta za matični direktorijum ({//}
):
fdfind -e zip -x unzip {} -d {//}
ZIP datoteka je pronađena i raspakovana u svom matičnom direktorijumu.
Šta želite da pronađete?
Zahvaljujući svojoj jednostavnosti i mogućnosti da pokrije većinu uobičajenih scenarija pretrage, fd
može lako postati vaša glavna komanda za pronalaženje datoteka. Ukoliko vam zatrebaju naprednije funkcionalnosti, uvek se možete vratiti na iskusnu komandu find
.