
Jednou z nejběžnějších operací při práci na Linuxu je vyhledávání souborů a adresářů. V systémech Linux existuje několik příkazů, které umožňují vyhledávat soubory, přičemž nejpoužívanější jsou příkazy find a locate.
locate
je nejrychlejší a nejjednodušší způsob, jak vyhledávat soubory a adresáře podle jejich jmen.
V tomto článku vysvětlíme, jak používat locate
příkaz.
Instalace locate
(locate příkaz nenalezen) #
V závislosti na distribuci a způsobu zřízení systému může nebo nemusí být balíček locate ve vašem systému Linux předinstalován.
Chcete-li zkontrolovat, zda locate
je nainstalován obslužný program, otevřete terminál a zadejte locate
a stiskněte Enter
. Pokud je balíček nainstalován, systém zobrazí locate: no pattern to search for specified
. Jinak uvidíte něco jako locate command not found
.
Pokud locate
není nainstalován, můžete jej snadno nainstalovat pomocí správce balíčků vašeho distribuce.
Instalovat locate
na Ubuntu a Debianu #
sudo apt update
sudo apt install mlocate
Instalovat locate
na CentOS a Fedora #
sudo yum install mlocate
Jak locate
Práce #
locate
příkaz vyhledává daný vzor prostřednictvím databázového souboru, který je vygenerován updatedb
příkaz. Nalezené výsledky se zobrazí na obrazovce, jeden na řádek.
Během instalace balíčku mlocate se vytvoří úloha cron, která spustí updatedb
příkaz každých 24 hodin. Tím je zajištěna pravidelná aktualizace databáze. Další informace o úloze cron naleznete v /etc/cron.daily/mlocate
soubor.
Databázi lze ručně aktualizovat spuštěním updatedb
jako root nebo uživatel s právy sudo:
sudo updatedb
Proces aktualizace bude nějakou dobu trvat v závislosti na počtu souborů a adresářů a rychlosti vašeho systému.
Soubory vytvořené po aktualizaci databáze nebudou zobrazeny ve výsledcích vyhledávání.
Ve srovnání s výkonnějším find
příkaz, který prohledává systém souborů, locate
pracuje mnohem rychleji, ale postrádá mnoho funkcí a může vyhledávat pouze podle názvu souboru.
Jak používat locate
Příkaz #
Syntaxe pro locate
příkaz je následující:
locate [OPTION] PATTERN...
Ve své nejzákladnější podobě, pokud je použit bez jakýchkoli voleb, locate
příkaz vypíše absolutní cestu všech souborů a adresářů, které odpovídají vyhledávacímu vzoru a pro které má uživatel oprávnění ke čtení.
Chcete-li například vyhledat soubor s názvem .bashrc
byste napsali:
locate .bashrc
Výstup bude obsahovat názvy všech souborů obsahujících řetězec .bashrc
v jejich jménech:
/etc/bash.bashrc
/etc/skel/.bashrc
/home/linuxize/.bashrc
/usr/share/base-files/dot.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc
Soubor /root/.bashrc
soubor se nezobrazí, protože jsme příkaz spustili jako běžný uživatel, který nemá přístupová oprávnění k /root
adresář.
Pokud je seznam výsledků dlouhý, pro lepší čitelnost můžete výstup zpracovat do less
příkaz:
locate .bashrc | less
locate
příkaz také přijímá vzory obsahující globbingové znaky, jako je zástupný znak *
. Když vzor neobsahuje žádné globbingové znaky, příkaz hledá *PATTERN*
. To je důvod, proč v předchozím příkladu byly zobrazeny všechny soubory obsahující ve svém názvu vyhledávací vzor.
Zástupný znak je symbol používaný k reprezentaci nuly, jednoho nebo více znaků. Chcete-li například vyhledat všechny .md
soubory v systému, zadejte:
locate *.md
Chcete-li omezit výsledky vyhledávání, použijte -n
následuje počet výsledků, které chcete zobrazit. Následující příkaz vyhledá všechny .py
soubory a zobrazí pouze 10 výsledků:
locate -n 10 *.py
Ve výchozím nastavení find
provádí vyhledávání rozlišující malá a velká písmena. -i
(--ignore-case
) říká locate
ignorovat případ a spustit vyhledávání bez rozlišení malých a velkých písmen.
locate -i readme.md
/home/linuxize/p1/readme.md
/home/linuxize/p2/README.md
/home/linuxize/p3/ReadMe.md
Chcete-li zobrazit počet všech odpovídajících položek, použijte -c
(--count
) možnost. Následující příkaz vrátí počet všech souborů obsahujících .bashrc
v jejich jménech:
locate -c .bashrc
6
Ve výchozím nastavení find
nekontroluje, zda nalezené soubory stále existují v systému souborů. Pokud jste smazali soubor po poslední aktualizaci databáze a pokud soubor odpovídá vyhledávacímu vzoru, bude zahrnut do výsledků vyhledávání.
Chcete-li zobrazit pouze názvy souborů, které v daném okamžiku existují locate
je spuštěn, použijte -e
(--existing
) možnost. Následující příklad vrátí pouze existující .json
soubory:
locate -e *.json
Pokud potřebujete spustit složitější vyhledávání, použijte -r
(--regexp
), která vám umožňuje vyhledávat pomocí základního regulárního výrazu namísto vzorů. Tuto možnost lze zadat vícekrát.
Například pro vyhledání všech .mp4
a .avi
soubory ve vašem systému a ignorovat malá a velká písmena, spustíte:
locate --regex -i "(\.mp4|\.avi)"
Závěr č.
locate
příkaz hledá v systému souborů soubory a adresáře, jejichž název odpovídá danému vzoru. Syntaxe příkazu je snadno zapamatovatelná a výsledky se zobrazí téměř okamžitě.
Další informace o všech dostupných možnostech locate
typ příkazu man locate
ve vašem terminálu.
Pokud máte nějaké dotazy, neváhejte zanechat komentář.