Vyhledávání na webu

Existuje rychlejší způsob, jak najít soubory na Linuxu, který jsem si přál znát dříve


Stáhl jsem si AppImage, ale před pár dny, když jsem ho potřeboval, jsem si nebyl úplně jistý, kam jsem ho uložil. Přestože jsem tušil složku Stažené soubory, ta se bohužel stala skladištěm pro všechny možné soubory a screenshoty. Tak jsem použil příkaz find ve svém terminálu.

Co mě ale zaujalo, bylo to, že jsem začal manuálně prohledávat složku Stahování, zatímco jsem čekal, až find dokončí hledání. Zvykl jsem si na pomalé vyhledávání souborů na Linuxu; jednoduše jsem nepoužíval nejefektivnější nástroj.

Myslel jsem, že pomalé vyhledávání je jen součást používání Linuxu

Pak jsem porovnal příkazy vedle sebe a viděl, kolik tření jsem přijal

Většina uživatelů Linuxu se nejprve naučí používat příkaz find. Dává to smysl, protože je univerzálně dostupný a výkonný. Také dobře funguje pro přesné filtrování. Nicméně ho používáme tak často, i když to není správný nástroj pro danou práci.

Musíte pochopit, jak příkaz find skutečně funguje. „Prohledává váš souborový systém živě, skenuje adresáře jeden po druhém, místo aby používal předem vytvořený index. To je v pořádku, když nemáte příliš mnoho složek nebo je systém upravený. Nicméně, jakmile se soubory nashromáždí během let a máte velké vývojové adresáře nebo kontejnery, začnete si všímat, jak moc find zpomaluje. Čekání se stává frustrujícím, pokud zadáte špatný přepínač a musíte začít úplně znovu.

Kromě toho nemá příkaz find nejjednodušší syntaxi a často se snažím si pamatovat přepínače místo toho, abych skutečně vyhledával.

find . -type f -iname "*.png"

Takto vypadá stejný vyhledávání pomocí fd:

fd png

Syntaxe příkazu find se stává obtížnou, pokud ji používáte několikrát týdně. To neznamená, že nemá žádné využití. Pokud píšete skripty nebo potřebujete přesné filtrování s ohledem na oprávnění, find je skvělá volba. Nepotřebuje žádné doplňky, ale jeho používání pro každodenní hledání znamená přijmout více zdržení, než je nutné.

Takto si Find stojí v porovnání s jinými nástroji:

Nástroj

Jak to hledá

Rychlost na velkých systémech

Syntaktické úsilí

vědomý si .gitignore

Barevný výstup

Nejlepší pro

najít

Živý průzkum souborového systému

Pomalejší, jak se adresáře zvětšují

Vysoká (vyžadovány podrobné přepínače)

Ne

Ne

Skripty, přenosné filtrování, přesné dotazy

fd

Živý průzkum souborového systému

Rychlejší než najít

Nízký (běžné výrazy fungují)

Ano

Ano

Každodenní vyhledávání souborů, pracovní postupy vývojářů

plocate

Předpřipravený index

Téměř okamžitě bez ohledu na velikost

Velmi nízký

Ne

Ne

Široké vyhledávání, systémové soubory, binární soubory

fzf

Potrubí do jakéhokoli zdroje

Okamžitá (interaktivní vrstva)

Žádný (zadáváte fragmenty)

Záleží na zdroji

Ano

Interaktivní navigace, historie příkazů

Poprvé, když jsem použil fd, přestal jsem se bát hledání souborů

Působilo to méně jako psaní příkazů a spíše jako psaní toho, co jsem skutečně chtěl

Fd je moderní alternativa k find. Jeho cílem je, aby zážitek působil co nejpřirozeněji, ale protože není ve výchozím nastavení nainstalován na Linuxu, mnoho lidí o jeho použití nepřemýšlí. Můžete jej nainstalovat jediným příkazem:

# Ubuntu/Debian
sudo apt install fd-find
# Fedora
sudo dnf install fd
# Arch
sudo pacman -S fd

Hlavní rozdíly mezi fd a find spočívají v drobných detailech, které se sčítají. fd umožňuje vyhledávání bez ohledu na velikost písmen a poskytuje výsledky, které jsou barevně zvýrazněné a na první pohled čitelné. Když jsem poprvé vyhledával v adresáři projektu a nebyl jsem zahlcen složkou node_modules, začal jsem si vážit toho, jak fd automaticky respektuje .gitignore. Ve výchozím nastavení skrývá skryté soubory, pokud je explicitně nepožádáte.

Pouhé spuštění fd .env bylo vše, co jsem potřeboval k tomu, abych měl okamžitě čitelné výsledky. Nemusel jsem si pamatovat přesný adresář ani se trápit se syntaxí. Jednoduchost podporuje vyhledávání. Nicméně `find` je stále lepší volba pro vzdálený server, kde nelze instalovat balíčky.

Indexované vyhledávání bylo okamžikem, kdy mi vyhledávání v Linuxu konečně došlo

Sledování tisíců souborů, které se objevily za méně než sekundu, změnilo můj pohled na celý problém






Fd byla opravdu rychlá, ale i tak mě to nepřipravilo na plocate. Fd a find procházejí váš souborový systém v reálném čase, ale plocate prochází předpřipravenou databázi vašeho systému, aby poskytl výsledky vyhledávání. Od Ubuntu 22.04 je to výchozí volba a vrací výsledky vyhledávání neuvěřitelnou rychlostí i na extrémně zaplněných zařízeních.

Když jsem spustil příkaz plocate obs-plugin, téměř to vypadalo, jako by se výsledky objevily dříve, než jsem příkaz dokončil. Nicméně neprohledává váš aktuální systém, takže pokud máte nově vytvořené soubory, nemusí být ještě v databázi aktualizovány. Spusťte sudo updatedb, abyste aktualizovali databázi.

plocate je lepší volba, když si sotva pamatujete, že něco někde existovalo, aniž byste měli představu o konkrétním adresáři, zatímco fd funguje lépe v rámci projektu a když potřebujete živé výsledky.

fzf způsobil, že terminál působil méně jako příkazový řádek a více jako Spotlight

Jakmile jsem mohl vyhledávat interaktivně, přestal jsem se starat o to, kde jsou věci uloženy

Způsob, jakým se pohybuji po Linuxu, byl ovlivněn fzf více než jakýkoli jiný nástroj. Nemohu to popsat, aniž bych zněl přehnaně.

Není to váš tradiční vyhledávací příkaz, ale spíše fuzzy finder. Chcete-li jej použít, musíte však provést jednorázový krok aktivace integrace shellu pro bash nebo zsh. Poté stačí stisknout Ctrl + T, abyste získali živý posuvný seznam souborů v aktuálním adresářovém stromu odkudkoli v terminálu. Seznam se bude v reálném čase zužovat, jak budete zadávat částečné názvy nebo hrubé aproximace.

Můžete dokonce spustit příkaz jako fd | fzf a získat rychlost a interaktivitu, protože přesměrovává rychlé výsledky fd, které respektují .gitignore, přímo do interaktivního filtru fzf. Také historie příkazů se může stát vyhledávatelnou s filtrovatelným seznamem, když použijete Ctrl + R.

Nástroje tam vždy byly; jen mě nikdy nenapadlo se podívat

Když jsem přešel ze stále používání příkazu find na výběr lepšího nástroje pro každou práci, systém Linux se stal přívětivějším. Ukázalo mi to, že problém je zřídka v počítači, ale spíše v tom, jak jsme se rozhodli ho používat. Rychlejší způsob hledání souborů není jediný nástroj nebo příkaz; závisí na konkrétních situacích. Ale používání příkazů find, fd, plocate a fzf mě otevřelo k některým z nejúžasněji užitečných příkazů v Linuxu.

Související články