Typickým problémem při práci s počítači je, že nemůžete někde najít soubory, které jste si uložili. Mnoho programů GUI umožňuje vyhledávat soubory při práci pod Linuxem, nezávisle na distribuci. V některých situacích však budete mít přístup pouze k terminálu příkazového řádku, zejména pokud spravujete servery nebo k přístupu do systému používáte SSH. Pokud své soubory nemůžete najít, musíte je vyhledat pomocí programů příkazového řádku v systému Linux.
Tento tutoriál vám ukáže, jak používat Terminál, což je program příkazového řádku v OS Ubuntu, k vyhledání souborů. V shellu existují tři známé způsoby vyhledávání souborů:
- Vyhledejte soubory pomocí Najít příkaz
- Pomocí Vyhledat příkaz k vyhledání souborů
- Pomocí Grep příkaz pro vyhledávání v souborech
Příkazy Find a Locate se používají k vyhledávání souborů v systému, zatímco grep se používá k vyhledávání souborů podle textu, který obsahuje. Najít je pomalejší metoda, ale obsahuje několik podmínek hledání, zatímco Locate nezahrnuje tolik podmínek, ale je mnohem rychlejší než hledání.
Začněme s postupem. Budeme používat Ubuntu 20.04 LTS pro popis postupu uvedeného v tomto článku.
Metoda 1:Použití příkazu Najít
Najít je vysoce flexibilní příkaz používaný k vyhledávání souborů na základě různých podmínek. Je to velmi užitečný nástroj při hledání souboru, u kterého si nepamatujete název souboru. Pomocí příkazu Najít můžete vyhledávat podle názvu souboru a složky, data vytvoření, data změny a oprávnění. Tyto podmínky můžete kombinovat v jednom příkazu Najít. Je to velmi výkonný, ale pomalejší vyhledávací nástroj.
Obecná syntaxe příkazu je:
$ find /path/to/file/ -iname filename
Vyhledat soubory v konkrétním adresáři
Pomocí příkazu Najít můžete vyhledat všechny soubory v určitém adresáři. Obecná syntaxe by byla:
$ find /path/to/file/
Chcete-li například najít všechny soubory pod /home/tin/Downloads/ adresáře, spusťte Terminál stisknutím Ctrl+Alt+T a potom spusťte následující příkaz v Terminálu:
$ find /home/tin/Downloads/
Vyhledat soubory v aktuálním adresáři
Chcete-li vyhledat soubory v aktuálním adresáři, použijte
$ find .
Chcete-li vyhledat soubor s názvem např. „softwares“ v aktuálním adresáři, použijte následující příkaz v Terminálu:
$ find . -iname Softwares
Vyhledávání pomocí zástupného znaku
K vyhledání souborů, které odpovídají dotazu, můžete také použít zástupné znaky. Obecná syntaxe by byla:
$ find /path/to/file/ -iname filename*
Chcete-li například vyhledat soubory, které začínají slovem „cent“, spusťte v Terminálu následující příkaz:
$ find /home/tin/ -iname cent*
Vyhledat prázdné soubory
Prázdné soubory můžete také hledat pomocí příkazu Najít. Obecná syntaxe by byla:
$ find /path/to/file/ -iname -empty
Například najít prázdné soubory pod /home/tin adresáře, spusťte v Terminálu následující příkaz:
$ find /home/tin/ -empty
Vyhledávání podle data a času
Pomocí příkazu Najít můžete také vyhledávat soubory v závislosti na tom, kdy byly zpřístupněny nebo upraveny. Existují typy času, který můžete použít k prohledávání souborů:
- mtime (čas změny) :když byl obsah souboru naposledy upraven.
- atime (čas přístupu) :kdy byl soubor naposledy otevřen.
- ctime (změnit čas) :když byly naposledy změněny atributy souboru.
Chcete-li například vyhledat soubory v aktuálním adresáři, které byly změněny před méně než 2 dny, spusťte v Terminálu následující příkaz:
$ find . -mtime -2
Chcete-li vyhledat soubory, ke kterým se přistupovalo před méně než 2 dny, spusťte v Terminálu následující příkaz:
$ find . –atime -2
Chcete-li vyhledat soubory, které byly změněny před méně než 2 dny, spusťte v Terminálu následující příkaz:
$ find . –ctime -2
Vyhledávání podle velikosti souboru
Chcete-li například vyhledat soubor, jehož velikost je větší než 5 MB, můžeme v Terminálu použít následující příkaz:
$ find . –size +5M\
Vyhledávání na základě oprávnění k souboru
Používá se k vyhledání souborů se specifickým oprávněním. Obecná syntaxe by byla:
$ find /path/to/file/ -type -perm mode
Kde:
Typ parametr obsahuje d nebo f hodnoty, které se používají k určení typu souboru. d pro adresáře a f pouze pro soubory.
režim může být buď s číselným oprávněním (např. 777, 655.. atd.) nebo symbolickým oprávněním (např. u=x, a=r+x).
Chcete-li například vyhledat soubor s oprávněním 644, můžeme v Terminálu použít následující příkaz:
$ find . –type f –perm 644
Metoda 2:Použití příkazu Locate
Existuje další příkaz Locate, který lze použít k vyhledávání souborů v Linuxu. Nemá tolik vyhledávacích podmínek jako nástroj Najít, ale je mnohem lepší a rychlejší než nástroj Najít. Důvodem je proces na pozadí, který skutečně běží ve vašem systému a vyhledává a ukládá nové soubory do své vlastní databáze. Na rozdíl od příkazu Najít nehledá na vašem místním pevném disku soubory a adresáře, ale místo toho je prohledává ve své vlastní databázi. Jeho databáze by měla být pravidelně aktualizována, aby vyhledávací nástroj fungoval.
Instalace Locate
Locate není ve výchozím nastavení v OS Linux nainstalováno. Budete jej muset nainstalovat ručně. Stiskněte Ctrl+Alt+T spusťte Terminál a poté zadejte následující příkaz jako sudo pro instalaci nástroje Locate:
$ sudo apt-get install locate
Po dokončení instalace můžete ihned použít nástroj Locate.
Obecná syntaxe příkazu je:
$ locate –i filename
Kde -i se používá k ignorování rozlišení velkých a malých písmen.
Vyhledávání souboru
Chcete-li například vyhledat název souboru „centos“, použijte v Terminálu následující příkaz:
$ locate –i centos
Vyhledá všechny soubory, které ve svých názvech obsahují řetězec „centos“.
Vyhledat více souborů
Můžete také hledat více názvů souborů současně. Například pomocí následujícího příkazu v Terminálu vyhledejte dva soubory „sdn.txt“ a „centos“ :
$ locate –i sdn.txt centos
Vyhledávání pomocí zástupných znaků
K vyhledání souborů, které odpovídají dotazu, můžete také použít zástupný znak. Chcete-li například vyhledat všechny soubory, které končí příponou „.iso“, použijte v Terminálu následující příkaz:
$ locate –i *.iso
Aktualizovat databázi umístění
Příkaz Locate spoléhá na to, že funguje jeho databáze, takže je třeba jej pravidelně aktualizovat. Spuštěním následujícího příkazu v Terminálu aktualizujte databázi nástroje Locate:
$ sudo updatedb
Metoda 3:Použití příkazu Grep
Ačkoli Grep není pro přímé vyhledávání souborů ve vašem systému, místo toho se používá k vyhledávání textu. Můžete jej však použít k zobrazení názvů souborů, které obsahují konkrétní řetězec znaků, který odpovídá vašemu vyhledávacímu dotazu. Chcete-li vyhledat řetězec, musíte jej uzavřít do dvojitých uvozovek.
Obecná syntaxe příkazu je:
$ grep [možnosti] [vzor] [/cesta/k/souboru]
kde [možnosti] obsahuje obecné možnosti pro ovládání vyhledávání a [vzor] obsahuje řetězec, který chceme hledat.
Pokud hledáte soubor obsahující slovo, o kterém se domníváte, že by se mohlo nacházet ve vašem konkrétním adresáři, můžete jej vyhledat pomocí výše uvedené syntaxe příkazu v Terminálu.
Chcete-li například vyhledat soubor, který obsahuje slovo „tintin“, a domníváme se, že tento soubor může být v našich Staženích složku, můžeme použít následující příkaz k nalezení tohoto souboru.
$ grep -r –i “tintin” /home/tin/Downloads
Kde
-i se používá k ignorování rozlišení velkých a malých písmen
–r se používá k rekurzivnímu hledání zadaného adresáře
Hledat více slov
Můžete také hledat více řetězců současně. Musíte použít zpětné lomítko "\" a znak "|" znaky mezi vašimi řetězci.
Například k vyhledání dvou řetězců „tintin“ a „ping“ můžeme v Terminálu použít následující příkaz:
$ grep –r –I “tintin\|ping” /home/tin/Downloads
To byl tedy stručný přehled toho, jak můžete vyhledávat soubory pomocí příkazového řádku v Ubuntu. V tomto článku jsme viděli tři užitečné metody příkazového řádku pro vyhledávání souborů. Můžete si vybrat kteroukoli z těchto metod v závislosti na rychlosti a podmínkách vyhledávání.