Більшість користувачів Linux добре знайомі з командою find і безліччю випадків, коли вона може бути використана. Сьогодні ми розглянемо альтернативу команді find, яка називається fd.
fd – це простий, швидкий і зручний інструмент, призначений для більш швидкої роботи порівняно з find. Він не призначений для повної заміни find, а скоріше надає вам просту у використанні альтернативу, яка працює трохи швидше.
Особливості fd
Деякі з особливостей fd:
- Простий у використанні синтаксис – fd *шаблон* замість find -iname *шаблон*.
- Барвистий висновок – аналогічний висновку команди ls.
- Швидка продуктивність. Бенчмарки розробника доступні тут.
- Інтелектуальний пошук, за замовчуванням нечутливий до регістру і перемикається на чутливий до регістру, якщо шаблон містить символ у верхньому регістрі.
- За замовчуванням не шукає в прихованих файлах і каталогах.
- За замовчуванням не шукає в .gitignore.
- Розуміє юнікод.
Як встановити fd у Linux
Ми розглянемо, як встановити fd у різних дистрибутивах Linux, використовуючи стандартний менеджер пакетів, як показано нижче.
$ sudo apt install fd-find [On Debian, Ubuntu and Mint]
$ sudo yum install fd-find [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ sudo emerge -a sys-apps/fd [On Gentoo Linux]
$ sudo pacman -S fd [On Arch Linux]
$ sudo zypper install fd [On OpenSUSE]
$ sudo apk add fd [On Alpine Linux]
Як використовувати fd у Linux
Як і команда find, fd має безліч варіантів використання, але давайте почнемо з перевірки доступних опцій:
# fd -h
OR
# fd --help
Давайте розглянемо кілька прикладів. Ви можете запустити fd без аргументів, висновок буде дуже схожий на команду ls -R.
# fd
У наступних прикладах fd я буду використовувати стандартну установку WordPress, розташовану в /var/www/html/, для пошуку різних файлів і папок.
У наведеному нижче прикладі я вивів тільки перші 10 результатів для коротшого виведення, використовуючи перенаправлення труб за допомогою команди head.
# fd | head
Пошук усіх файлів JPG у Linux
Припустимо, ми хочемо знайти всі файли jpg. Ми можемо використовувати прапор “-e” для фільтрації за розширенням файлу:
# fd -e jpg
Якщо ви хочете вказати каталог пошуку, вам просто потрібно вказати його як аргумент:
# fd <pattery> <directory>
Пошук рядка у всіх файлах PHP в Linux
Прапор “-e” можна використовувати в поєднанні з шаблоном, як показано на малюнку:
# fd -e php index
Наведена вище команда шукатиме файли з розширенням .php, у яких є рядок “index”:
Якщо ви хочете виключити деякі результати, ви можете використовувати прапор “-E”, як показано на малюнку:
# fd -e php index -E wp-content
Якщо ви хочете виключити деякі результати, ви можете використовувати прапор “-E”, як показано на малюнку:
Пошук усіх файлів JPG і зміна роздільної здатності
Так само, як і find, ви можете використовувати аргументи -x або –exec для паралельного виконання команд з результатами пошуку.
Ось приклад, у якому ми використовуємо chmod для зміни дозволів файлів зображень
# fd -e jpg -x chmod 644 {}
Наведений вище приклад знайде всі файли з розширенням jpg і виконає команду chmod 644 <шлях до файлу>.
Ось деякі корисні пояснення та використання дужок:
- {} – Заглушка, яку буде замінено шляхом до результату пошуку (wp-content/uploads/01.jpg).
- {.} – аналогічно {}, але без використання розширення файлу (wp-content/uploads/01).
- {/}: Заповнювач, який буде замінено основним ім’ям результату пошуку (01.jpg).
- {//}: Батьківський каталог знайденого шляху (wp-content/uploads).
- {/.}: Тільки основне ім’я, без розширення (01).
Висновок
Це був короткий огляд команди fd, яка деяким користувачам може здатися простішою у використанні та швидшою. Як згадувалося раніше в цій статті, команда fd не призначена для повної заміни find, а скоріше забезпечує простоту використання, легший пошук і кращу продуктивність. Fd не займає багато місця і є хорошим інструментом у вашому арсеналі.