Jak používat příkaz fd v systému Linux

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.

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“.

  Jak používat poslední příkaz v systému Linux

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“.

  Jak si vytvořit svůj vlastní Linux NAS s Open Media Vault

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.

  Jak zkopírovat a vložit text na Linux's Bash Shell

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.