Большинство пользователей 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
Эта команда будет искать все файлы с расширением php, содержащие строку «index», и исключит результаты из каталога «wp-content».
Поиск всех файлов 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 не занимает много места и является хорошим инструментом в вашем арсенале.