V Linuxu je fd jednodušší alternativou k příkazu find. Má zjednodušenou syntaxi, používá rozumné výchozí hodnoty a má vestavěné chování zdravého rozumu. Pojďme si to projít jeho kroky.
Table of Contents
fd versus find: Jaký je rozdíl?
Fd příkaz není určen k nahrazení tradiční příkaz find, který má byl na Linuxu, no, navždy. Místo toho se fd snaží uspokojit většinu běžných způsobů použití find přímočařejším způsobem – a často je to osmkrát nebo devětkrát rychlejší než find. Některé z jeho benchmarků můžete vidět na projektu Stránka úložiště GitHub.
fd má barevný výstup, podobný jako u některých režimů ls. Je rekurzivní, ale ve výchozím nastavení neprohledává skryté adresáře. To ví o Gitu a také automaticky ignoruje všechny vzory ve vašem souboru „.gitignore“.
fd ve výchozím nastavení nerozlišuje malá a velká písmena. Pokud však váš vyhledávací vzor obsahuje velké písmeno, fd pracuje v režimu rozlišování malých a velkých písmen. Výchozí nastavení samozřejmě můžete přepsat, ale v mnoha případech fungují ve váš prospěch.
Instalace fd
Od Ubuntu 19.04 (Disco Dingo) můžete fd nainstalovat přímo voláním oficiálně udržovaného balíčku pomocí apt-get. Pokud používáte starší verzi Ubuntu, zkontrolujte pokyny k instalaci na stránce centra Git.
Zadejte následující:
sudo apt-get install fd-find
V Ubuntu je příkaz fdfind, aby se zabránilo střetu názvu s jiným existujícím nástrojem. Pokud chcete, aby to bylo fd, můžete nastavit alias:
alias fd=fdfind
Chcete-li, aby byl alias trvalý a zůstal dostupný i po restartu, vložte jej do souboru „.bashrc“ nebo „.bash_aliases“.
Chcete-li nainstalovat fd na Fedoru, zadejte tento příkaz:
sudo dfn install fd-find
Na Manjaro zadejte následující:
sudo pacman -Syu fd
fd versus fdfind
Aby nedošlo k záměně, ponechali jsme příkaz s výchozím názvem fdfind na našem testovacím počítači Ubuntu. fd a fdfind jsou přesně stejné příkazy, jak uvidíte v následujícím příkladu (pokud požádáte fdfind, aby ukázal svou verzi, nazývá se „fd“):
fdfind --version
Příkaz budeme nazývat „fed“, ale v příkladech použijeme Ubuntu „fdfind“. V jiných distribucích Linuxu můžete zadat „fd“ místo „fdfind“, abyste ušetřili několik úhozů.
Jednoduché vyhledávání pomocí fd
Pokud používáte fd bez voleb příkazového řádku, chová se trochu jako ls, kromě toho, že standardně uvádí soubory v podadresářích.
Zadejte následující:
fdfind
Výstup se zobrazí v různých barvách pro různé typy souborů a adresářů.
Chcete-li zobrazit soubory určitého typu, použijte volbu -e (přípona). Všimněte si, že před příponou nemusíte tečku (.), ani se nerozlišují malá a velká písmena.
Můžete například zadat následující:
fdfind -e png
Nyní jsou uvedeny pouze soubory obrázků PNG.
Chcete-li vyhledat jeden soubor, zadejte jeho název do příkazového řádku, například:
fdfind index.page
Soubor je nalezen a je náhodou v podadresáři. Nemuseli jsme říkat fd, aby hledal rekurzivně.
Chcete-li, aby hledání začalo v konkrétním adresáři, zadejte na příkazovém řádku cestu k souboru. Následující příkaz spustí vyhledávání v adresáři „/etc“ a vyhledá soubory, které obsahují „passwd“ v názvu souboru:
fdfind passwd /etc
Zde hledáme všechny soubory zdrojového kódu C, které obsahují „coord“ v názvu souboru:
fdfind -e c coord
Byly nalezeny dva odpovídající soubory.
fd a Git
Git je velmi populární systém pro správu verzí zdrojového kódu. Pokud na svém počítači používáte Git, pravděpodobně používáte soubory „.gitignore“ k tomu, abyste Gitu řekli, o které soubory se má zajímat a které může ignorovat. Ve výchozím nastavení fd respektuje nastavení ve vašich souborech „.gitignore“.
V tomto adresáři máme úložiště Git a soubor „.gitignore“. Zadáme následující:
ls -adl .git*
Požádejme fd, aby vypsal všechny soubory, které obsahují „coord“ v názvu souboru. Poté zopakujeme hledání a použijeme volbu -I (no ignore). To řekne fd, aby ignoroval nastavení v souboru „.gitignore“ a nahlásil každý odpovídající soubor.
K tomu všemu zadáme následující:
fdfind coord
fdfind coord -I
Dva další soubory ve druhé sadě výsledků jsou objektové soubory. Ty se vytvářejí při kompilaci souborového programu. Linker je pak použije k vytvoření konečné spustitelné verze programu.
Soubory objektů jsou programy pro správu verzí zdrojového kódu obvykle ignorovány. Obnovují se pokaždé, když kompilujete svůj program, takže nemusíte ukládat jejich kopie. V souboru „.gitignore“ je záznam, který dává Gitu pokyn, aby ignoroval soubory objektů, a ve výchozím nastavení je ignoruje i fd.
Volba -I (no ignore) nutí fd vrátit vše, co najde, místo aby se řídil souborem „.gitginore“.
Typy souborů a rozlišování malých a velkých písmen
Můžete požádat fd, aby hledal adresáře, soubory (včetně těch, které jsou spustitelné a prázdné) a symbolické odkazy. Můžete tak učinit pomocí volby -t (typ) následované jedním z níže uvedených písmen:
f: Soubor.
d: Adresář.
l: Symbolický odkaz.
x: Spustitelný soubor.
e: Prázdný soubor.
Následující hledá adresář s názvem images:
fdfind -td images
Byla nalezena shoda o jeden podadresář níže než aktuální.
Podívejme se, jak funguje rozlišování malých a velkých písmen u vzorců vyhledávání. Chcete-li nejprve vyhledat soubory, které obsahují „geo“ v názvech souborů, a poté ty, které obsahují „Geo“ v názvech souborů, zadáme následující:
fdfind -tf geo
fdfind -tf Geo
V prvním příkazu jsme použili vzor vyhledávání s malými písmeny, což způsobilo, že fd fungovalo bez ohledu na velikost písmen. To znamená, že „Geo“ i „Geo“ jsou platné shody.
Náš druhý příkaz obsahoval velké písmeno, což způsobilo, že fd fungovalo tak, aby se rozlišovala malá a velká písmena. To znamená, že pouze „Geo“ je platná shoda.
Provedení příkazu
Příkaz fd umožňuje spustit další příkaz a provést jej na každém z nalezených souborů.
Řekněme, že víme, že existuje zip soubor někde v našem stromu adresářů zdrojového kódu. Můžeme jej vyhledat pomocí následujícího příkazu, který hledá soubory s příponou ZIP:
fdfinf -e zip
Pomocí volby -x (exec) můžete každý nalezený soubor předat jinému příkazu, který jej zpracuje. Například můžeme zadat následující pro volání rozbalovací nástroj rozbalte náš soubor ZIP („{}“ je zástupný symbol představující nalezený soubor):
fdfind -e zip -x unzip {}
Tím se rozbalí soubor v aktuálním pracovním adresáři. Pokud chceme, aby byl rozbalen v adresáři obsahujícím soubor ZIP, můžeme použít jeden z následujících zástupných symbolů:
{}: Úplná cesta k souboru a název nalezeného souboru.
{/}: Název nalezeného souboru.
{//}: Adresář obsahující nalezený soubor.
{/.}: Název nalezeného souboru bez přípony.
Aby byl náš soubor ZIP nalezen a rozbalen v adresáři, který jej obsahuje, můžeme použít volbu unzip -d (adresář) a předat zástupný symbol nadřazeného adresáře ({//}):
fdfind -e zip -x unzip {} -d {//}
Soubor ZIP je poté umístěn a rozbalen ve svém nadřazeném adresáři.
Váš cíl hledání?
Protože s takovou jednoduchostí pokrývá nejběžnější použití, může se fd snadno stát vaším příkazem „najít“. Kdykoli budete potřebovat jeho pokročilejší funkce, vždy se můžete vrátit k tomu ostřílenému veteránovi, najít.