Как да използвате командата fd в Linux

В Linux fd е по-лесна алтернатива на командата find. Той има опростен синтаксис, използва разумни настройки по подразбиране и има вградено поведение на здрав разум. Нека го преминем през неговите стъпки.

fd срещу find: Каква е разликата?

Fd командата не е предназначена да замени традиционната команда find, която има бях на Linux, добре, завинаги. Вместо това fd се опитва да удовлетвори повечето от обичайните употреби на find по по-прост начин – и често е осем или девет пъти по-бърз от find. Можете да видите някои от неговите показатели на проекта Страница на хранилището на GitHub.

fd има оцветен изход, подобен на този на някои ls режими. Той е рекурсивен, но не търси скрити директории по подразбиране. То знае относно Git и също така автоматично ще игнорира всички шаблони във вашия файл „.gitignore“.

fd по подразбиране не е чувствителен към малки и големи букви. Въпреки това, ако вашият модел за търсене съдържа главна буква, fd работи в режим, чувствителен към малки и големи букви. Разбира се, можете да замените настройките по подразбиране, но в много случаи те работят във ваша полза.

Инсталиране на fd

От Ubuntu 19.04 (Disco Dingo,) можете да инсталирате fd директно, като извикате официално поддържания пакет с apt-get. Ако използвате по-стара версия на Ubuntu, проверете инструкции за инсталиране на страницата на Git hub.

Въведете следното:

sudo apt-get install fd-find

В Ubuntu командата е fdfind, за да се избегне сблъсък на имена с друга съществуваща помощна програма. Ако искате да е fd, можете да зададете псевдоним:

alias fd=fdfind

За да направите псевдонима постоянен, така че да остане достъпен след рестартиране, поставете го във вашия файл „.bashrc“ или „.bash_aliases“.

  Как да играете Mirror's Edge на Linux

За да инсталирате fd на Fedora, въведете тази команда:

sudo dfn install fd-find

На Manjaro въведете следното:

sudo pacman -Syu fd

fd срещу fdfind

За да избегнем объркване, оставихме командата с нейното име по подразбиране, fdfind, на нашия тестов компютър с Ubuntu. fd и fdfind са абсолютно една и съща команда, както ще видите в следния пример (ако помолите fdfind да покаже своята версия, той се нарича „fd“):

fdfind --version

Ще наречем командата „fed“, но в примерите ще използваме Ubuntu „fdfind“. В други дистрибуции на Linux можете да въведете „fd“ вместо „fdfind“, за да спестите няколко натискания на клавиш.

Прости търсения с fd

Ако използвате fd без опции от командния ред, той се държи малко като ls, освен че изброява файлове в поддиректории по подразбиране.

Въведете следното:

fdfind

Резултатът се появява в различни цветове за различни типове файлове и директории.

За да видите файлове от конкретен тип, използвайте опцията -e (разширение). Обърнете внимание, че не е нужно да предхождате разширението с точка (.), нито е чувствително главните букви.

Например, можете да напишете следното:

fdfind -e png

Сега единствените изброени файлове са PNG файлове с изображения.

За да потърсите един файл, въведете името му в командния ред, както следва:

fdfind index.page

Файлът е намерен и се намира в поддиректория. Не трябваше да казваме на fd да търси рекурсивно.

За да стартирате търсенето в определена директория, включете пътека на файла в командния ред. Следната команда ще започне търсене в директорията “/etc” и ще търси файлове, които включват “passwd” в името на файла:

fdfind passwd /etc

Тук търсим всички файлове с изходен код на C, които съдържат „coord“ в името на файла:

fdfind -e c coord

Бяха открити два съответстващи файла.

fd и Git

Git е изключително популярен система за контрол на версиите на изходния код. Ако използвате Git на вашия компютър, вероятно използвате файлове „.gitignore“, за да кажете на Git с кои файлове трябва да се занимава и кои може да игнорира. По подразбиране fd зачита настройките във вашите „.gitignore“ файлове.

  Как да инсталирате и използвате KDE Apper на Linux

В тази директория имаме Git хранилище и файл „.gitignore“. Пишем следното:

ls -adl .git*

Нека помолим fd да изброи всички файлове, които съдържат “coord” в името на файла. След това ще повторим търсенето и ще използваме опцията -I (без пренебрегване). Това казва на fd да игнорира настройките във файла “.gitignore” и да докладва за всеки съвпадащ файл.

За да направим всичко това, въвеждаме следното:

fdfind coord
fdfind coord -I

Двата допълнителни файла във втория набор от резултати са обектни файлове. Те се създават, когато се компилира файлова програма. След това те се използват от линкера за създаване на окончателната изпълнима версия на програмата.

Обектните файлове обикновено се игнорират от програмите за контрол на версиите на изходния код. Те се регенерират всеки път, когато компилирате вашата програма, така че не е нужно да съхранявате техни копия. Във файла “.gitignore” има запис, който инструктира Git да игнорира обектни файлове и по подразбиране fd също ги игнорира.

Опцията -I (без игнориране) принуждава fd да върне всичко, което намери, вместо да се ръководи от файла “.gitginore”.

Типове файлове и чувствителност към малки и големи букви

Можете да помолите fd да търси директории, файлове (включително тези, които са изпълними и празни) и символни връзки. Можете да направите това, като използвате опцията -t (тип), последвана от една от буквите по-долу:

f: Файл.
d: Указател.
л: Символична връзка.
x: Изпълним файл.
e: Празен файл.

Следното търси директория, наречена images:

fdfind -td images

Намерено е съвпадение, една поддиректория по-ниска от текущата.

Нека видим как чувствителността към главни и малки букви работи с моделите за търсене. Въведем следното, за да търсим първо файлове, които съдържат „geo“ в имената на файловете си, а след това тези, които съдържат „Geo“ в имената на файловете си:

fdfind -tf geo
fdfind -tf Geo

В първата команда използвахме модел за търсене с малки букви, което накара fd да работи по начин, нечувствителен към главни букви. Това означава, че и „Geo“ и „geo“ са валидни съвпадения.

  Как да инсталирате GitCola на Linux

Втората ни команда съдържаше главни букви, което кара fd да работи по начин, чувствителен към главни букви. Това означава, че само „Geo“ е валидно съвпадение.

Изпълнение на команда

Командата fd ви позволява да стартирате друга команда и да я изпълните върху всеки от намерените файлове.

Да кажем, че знаем, че има Zip файл някъде в нашето дърво с директории с изходен код. Можем да го потърсим с помощта на следната команда, която търси файлове с разширение ZIP:

fdfinf -e zip

С опцията -x (exec) можете да предадете всеки намерен файл на друга команда, която да бъде обработена от него. Например, можем да напишем следното, за да извикаме помощна програма за разархивиране за да разархивирате нашия ZIP файл („{}“ е заместител, представляващ намерения файл):

fdfind -e zip -x unzip {}

Това ще разархивира файла в текущата работна директория. Ако искаме той да бъде разархивиран в директорията, съдържаща ZIP файла, можем да използваме един от следните заместители:

{}: Пълният път към файла и името на намерения файл.
{/}: Името на файла на намерения файл.
{//}: Директорията, съдържаща намерения файл.
{/.}: Името на файла на намерения файл, без разширението.

За да бъде намерен и разархивиран нашия ZIP файл в директорията, която го съдържа, можем да използваме опцията unzip -d (директория) и да предадем заместител на родителската директория ({//}):

fdfind -e zip -x unzip {} -d {//}

След това ZIP файлът се намира и се разархивира в неговата родителска директория.

Вашата цел да намерите?

Тъй като покрива най-често срещаните употреби с такава простота, fd може лесно да се превърне във вашата команда за намиране. Винаги, когато имате нужда от неговите по-разширени функции, винаги можете да се върнете към този опитен ветеран, намерете.