Jak název napovídá, příkaz locate se v Linuxu používá k vyhledání (prohledávání) souboru. Má následující syntaxi:
locate [options] filename
I když je použití příkazu locate opravdu jednoduché, přichází se spoustou if a buts. Pro začátek, pokud nenajde soubor, nemusí to nutně znamenat, že soubor v systému neexistuje.
Nenechte se hned zmást. Vysvětlím, jak funguje příkaz locate a jak jej můžete použít k hledání souborů.
Použití příkazu locate v Linuxu
Příkaz locate pracuje na indexu, tj. databázi umístění souborů. Když použijete příkaz, odkazuje na tento index namísto prohledávání celého souborového systému. To je důvod, proč je locate super rychlý při hledání souborů v Linuxu.
Některé distribuce Linuxu automaticky pravidelně indexují celý souborový systém. Tento index můžete také vytvořit ručně (ukážu vám jej později v tomto článku).
Použití příkazu locate je smrtelně jednoduché. Stačí zadat název souboru:
locate filename
Výsledek zobrazí všechna místa, kde byl nalezen vámi zadaný soubor.
[email protected]:~$ locate desktop.iso
/home/abhishek/desktop.iso
Nejlepší na tom je, že k nalezení souboru nemusíte být v určitém adresáři. Pamatujte, že příkaz locate neprohledává souborový systém, ale index. To je důvod, proč při hledání souborů nemusíte zadávat cestu nebo adresář.
Můžete také provést vyhledávání bez rozlišení velkých a malých písmen pomocí volby -i:
[email protected]:~$ locate -i desktop.iso
/home/abhishek/desktop.iso
/home/abhishek/Downloads/Desktop.iso
Mějte na paměti, že výsledek může zobrazit všechny soubory, které mají ve svém názvu hledaný výraz.
[email protected]:~$ locate -i desktop
/home/abhishek/eoan-desktop-amd64.iso
/home/abhishek/Bionic-Desktop-amd64.iso
/home/abhishek/desktop.iso
/home/abhishek/Downloads/Desktop.iso
Můžete také použít regulární výraz s locate:
locate -r regex_expression
Použití updatedb k vytvoření vlastního indexu pro příkaz locate
Toto je pouze pro informační účely a nemyslím si, že byste to museli používat.
Pokud chcete vytvořit index aktuálního adresáře (a jeho podadresářů), můžete použít příkaz updatedb takto:
updatedb -l0 -U my_directory -o index_file
Jakmile vytvoříte tento indexový soubor, můžete požádat příkaz locate o explicitní použití tohoto indexu:
locate -d index_file file_name
Je locate lepší než příkaz find?
Pokud chcete hledat soubory v adresářové struktuře, která se příliš nemění, je dobrou volbou příkaz locate. Je to také super rychlé.
Ale příkaz find vám dává spoustu možností, speciálně pro provádění složitých možností vyhledávání.
Oba příkazy mají své použití. Podle mého názoru, pokud se cítíte líní a chcete rychlý výsledek, použijte locate. Pokud se vám výsledek nelíbí, přepněte na příkaz find.
Co si o tom myslíte?