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 pngSyntaxe 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 fdHlavní 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.








