Як використовувати команду 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.

Введіть наступне:

sudo apt-get install fd-find

В Ubuntu командою є fdfind, щоб уникнути зіткнення імен з іншою існуючою утилітою. Якщо ви хочете, щоб це було fd, ви можете встановити псевдонім:

alias fd=fdfind

Щоб зробити псевдонім постійним, щоб він залишався доступним після перезавантаження, помістіть його у свій файл «.bashrc» або «.bash_aliases».

  Як встановити Solus 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

Знайдено два відповідні файли.

  Як використовувати rclone для резервного копіювання на Google Drive в Linux

fd і Git

Git надзвичайно популярний система контролю версій вихідного коду. Якщо ви використовуєте Git на своєму комп’ютері, ви, ймовірно, використовуєте файли «.gitignore», щоб вказати Git, які файли він має займатися, а які він може ігнорувати. За замовчуванням fd поважає налаштування у ваших файлах «.gitignore».

У цьому каталозі ми маємо репозиторій 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: Довідник.
l: Символічне посилання.
x: виконуваний файл.
e: порожній файл.

Нижче шукається каталог під назвою images:

fdfind -td images

Знайдено відповідність, на один підкаталог нижче поточного.

Давайте подивимося, як чутливість до регістру працює з шаблонами пошуку. Ми вводимо наступне, щоб спочатку шукати файли, які містять «geo» в іменах файлів, а потім ті, які містять «Geo» в іменах файлів:

fdfind -tf geo
fdfind -tf Geo

У першій команді ми використовували шаблон пошуку в нижньому регістрі, який змушував fd працювати без урахування регістру. Це означає, що і «Geo», і «geo» є дійсними збігами.

  Як встановити редактор електронних книг Sigil на 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 може легко стати вашою командою «знайти». Коли вам знадобляться його розширені функції, ви завжди можете повернутися до цього досвідченого ветерана.