Ako vyhľadávať súbory z terminálu v systéme Linux


Na tejto stránke

  1. Použite príkaz Locate
  2. Použite príkaz Nájsť

Aj keď existuje veľa spôsobov, ako môžeme vyhľadávať a lokalizovať súbory a adresáre v systéme Linux, najjednoduchší a najrýchlejší je pravdepodobne prostredníctvom terminálu. O tom však veľa používateľov Linuxu nevie, čo vedie k zbytočnej frustrácii. Tu je rýchly sprievodca, ktorý vám snáď pomôže nájsť to, čo vo vašom systéme hľadáte. Tu sa budeme venovať dvom rôznym vyhľadávacím aplikáciám. Príkaz locate, ktorý používa databázu na zrýchlenie vyhľadávania, a príkaz find, ktorý vykonáva operáciu vyhľadávania priamo v súborovom systéme.

Použite príkaz Locate

Príkaz „locate“ je prvým prostriedkom, ktorý by mal používateľ systému Linux použiť, pretože je oveľa rýchlejší ako čokoľvek iné. Dôvodom tejto bezkonkurenčnej rýchlosti je, že príkaz locate v skutočnosti nevyhľadáva na vašich lokálnych pevných diskoch súbory alebo adresáre, ktoré potrebujete nájsť, ale skôr číta databázový súbor mlocate.db, ktorý obsahuje všetky cesty k súborom vo vašom systéme. .

Ak ste ešte nenainštalovali lokalizáciu, použite tieto príkazy:

Debian a Ubuntu

sudo apt install locate

CentOS, AlmaLinux a Rocky Linux

dnf install locate

Pripravte príkaz lokalizácie na prvé použitie

Ak chcete aktualizovať databázu mlocate.db pred prvým použitím, spustite:

sudo updatedb

Ak chcete použiť locate, otvorte terminál a napíšte locate a za ním názov súboru, ktorý hľadáte. V tomto príklade hľadám súbory, ktoré vo svojom názve obsahujú slovo 'sunny'.

locate sunny

Lokalizácia vám tiež môže povedať, koľkokrát sa kľúčové slovo vyhľadávania v databáze zhoduje. To sa dosiahne zahrnutím parametra „-c “ do príkazu, čo znamená „count “.

locate -c sunny

Používatelia musia mať na pamäti, že „lokať“ potrebuje konkrétny a presný názov súboru, ktorý hľadáte, na rozdiel od iných flexibilnejších nástrojov. To znamená, že locate je skvelé na nájdenie niečoho, o čom ste si istí jeho názvom, ale nie je také skvelé, keď si presne nepamätáte názov súboru.

locate howtoforge

vs

locate Howtoforge

Navyše, a keďže „locate “ číta databázový súbor, výsledky môžu byť zastarané a nemusia byť úplne pravdivé. Ak chcete tento problém zmierniť, môžete aktualizovať databázu ciest k súborom zadaním „sudo updatedb “ na terminálovej relácii.

Tu nájdete ďalšie príklady použitia príkazu lokalizovať.

Ak potom stále nedostávate to, čo ste hľadali, alebo ste jednoducho zavalení množstvom výsledkov, prejdite na ďalší krok, ktorým je príkaz „nájsť“.

Použite príkaz Nájsť

Príkaz „nájsť“ je oveľa výkonnejší, ale aj pomalší nástroj na vyhľadávanie. Je to preto, že na rozdiel od príkazu „locate“, „nájsť“ skutočne vyhľadáva na vašich diskoch súbory a adresáre, ktoré používateľ hľadá. Nájsť je ideálne, keď sa pokúšate nájsť súbor alebo adresár, ale nepamätáte si jeho názov, pretože „nájsť“ dokáže vyhľadať súbory, ktoré patria určitému používateľovi alebo skupine používateľov, súbory, ktoré boli upravené alebo ku ktorým sa pristupovalo. nedávno súbory s určitým rozsahom veľkostí, skryté súbory, spustiteľné súbory, súbory iba na čítanie a súbory s určitými povoleniami. Najlepšie na tom je, že používateľ môže voľne kombinovať viacero vyššie uvedených kritérií do jedného príkazu „nájsť“, čím sa v podstate zúžia výsledky.

Keď už hovoríme o zúžení, prvá vec, ktorú chcete urobiť pri spustení funkcie „nájsť“, je povedať mu, aby hľadal v konkrétnom adresári. To výrazne urýchli proces vyhľadávania, ale vždy závisí od veľkosti adresára. Ak viete, kde by sa súbor mohol nachádzať, otvorte terminál, prejdite do adresára a spustite „nájsť . [názov súboru] “. Táto bodka hovorí, že vyhľadávanie má hľadať v aktuálnom adresári. Ak chcete namiesto toho prehľadávať svoj domovský adresár, nahraďte bodku „~/ “ a ak chcete prehľadávať celý súborový systém, použite namiesto toho „/“.

Napríklad chcem vyhľadať súbor, ktorý obsahuje plagát v mojom adresári sťahovania. Viem, že názov súboru obsahuje slovo „poster “, ale presne si nepamätám názov. Z tohto dôvodu by som prešiel do priečinka na sťahovanie pomocou príkazu cd cez terminál s „cd Downloads“ a potom zadal príkaz:

sudo find . -name "*poster*"

Tu je výsledok:

To mi hovorí, že v priečinku Downloads je súbor pdf s názvom „billy_poster copy “. Ak by som nevedel, kde sa nachádza, „nájsť“ by mi aj tak dalo vedieť, že sa nachádza v priečinku Stiahnuté súbory, ak som hľadal v nadradenom adresári.

Ak teraz nahradím parameter „-name “ parametrom „-name “, mohol by som získať výsledky bez ohľadu na veľkosť písmen. To je niečo, čo nie je v „locate “, takže ďalší užitočný prvok, keď si nie ste istí názvom súboru.

sudo find . -iname "*poster*"

Teraz predpokladajme, že stále hľadám ten istý súbor plagátu a jediné, čo si pamätám, je, že má veľkosť menšiu ako 5 MB. Príkaz, ktorý by som v tomto prípade použil, je:

find ~/ -size -5M

Ak by som vedel, že je vyššia ako povedzme 2 MB, príkaz by bol „nájsť ~/ -veľkosť +2M “. Najlepšie na tom je, že find podporuje booleovské operátory, aby bolo vyhľadávanie ešte silnejšie. V tomto príklade použijem príkaz, ktorý kombinuje moje poznatky, že veľkosť súboru je menšia ako 5 megabajtov a tiež väčšia ako 2. Príkaz na to bude:

find / -size -5M -and -size +2M

Nakoniec navrhneme, že si o súbore nepamätáme nič, ale pamätáme si, že sme k nemu pristupovali pred tromi minútami. Ak ho chcete nájsť, použite príkaz find ako:

find / -amin -3

Toto by bolo „find/-amin -30 “ na pol hodinu a „-amin -120 “ na dve hodiny atď. Ak ste k súboru pristupovali pred dvoma dňami, použite namiesto toho toto:

find / -time -2

V mieste vyhľadávania sa zobrazia všetky súbory, ku ktorým sa pristupovalo za posledné dva dni.

Myslím, že vyššie uvedené pokrýva väčšinu bežných scenárov použitia. Ak chcete získať ďalšie informácie o výkonnom príkaze „find“, otvorte terminál a napíšte „man find“. Veľa šťastia pri hľadaní toho, čo hľadáte.

Ďalšie príklady príkazu find pre Linux nájdete tu.