Как использовать команду fd в Linux

Опубликовано: 2022-01-29
Окно терминала на ПК с Linux с рабочим столом в стиле Ubuntu.
Фатмавати Ахмад Заэнури/Shutterstock

В Linux fd — более простая альтернатива команде find . Он имеет упрощенный синтаксис, использует разумные значения по умолчанию и имеет встроенное поведение, основанное на здравом смысле. Давайте пройдемся по его шагам.

fd и find: в чем разница?

Команда fd не предназначена для замены традиционной команды find , которая всегда была в Linux. Вместо этого fd пытается удовлетворить большинство распространенных применений find более простым способом — и часто в восемь или девять раз быстрее, чем find . Вы можете увидеть некоторые из его тестов на странице репозитория проекта GitHub.

10 основных команд Linux для начинающих
СВЯЗАННЫЕ 10 основных команд Linux для начинающих

fd имеет цветной вывод, аналогичный некоторым режимам ls . Он рекурсивный, но по умолчанию не ищет скрытые каталоги. Он знает о Git, а также автоматически игнорирует любые шаблоны в вашем файле «.gitignore».

fd по умолчанию нечувствителен к регистру. Однако, если ваш шаблон поиска содержит заглавную букву, fd работает в режиме с учетом регистра. Конечно, вы можете переопределить значения по умолчанию, но во многих случаях они работают в вашу пользу.

СВЯЗАННЫЕ С: Как использовать все команды поиска Linux

Установка фд

Начиная с Ubuntu 19.04 (Disco Dingo) вы можете установить fd напрямую, вызвав официально поддерживаемый пакет с помощью apt-get . Если вы используете более старую версию Ubuntu, ознакомьтесь с инструкциями по установке на странице центра Git.

Введите следующее:

 sudo apt-get установить fd-find 

Реклама

В Ubuntu используется команда fdfind , чтобы избежать конфликта имен с другой существующей утилитой. Если вы хотите, чтобы это было fd , вы можете настроить псевдоним:

 псевдоним fd=fdfind 

Чтобы псевдоним оставался постоянным и оставался доступным после перезагрузки, поместите его в файл «.bashrc» или «.bash_aliases».

СВЯЗАННЫЕ С: Как создавать псевдонимы и функции оболочки в Linux

Чтобы установить fd в Fedora, введите следующую команду:

 sudo dfn установить fd-find 

В Manjaro введите следующее:

 sudo pacman -Syu fd 

fd против fdfind

Чтобы избежать путаницы, мы оставили команду с именем по умолчанию fdfind на нашем тестовом ПК с Ubuntu. fd и fdfind — это одна и та же команда, как вы увидите в следующем примере (если вы попросите fdfind показать свою версию, она назовет себя «fd»):

 fdfind --версия 

Мы назовем команду «fed», но в примерах мы будем использовать Ubuntu «fdfind». В других дистрибутивах Linux вы можете ввести «fd» вместо «fdfind», чтобы сэкономить несколько нажатий клавиш.

Простой поиск с помощью fd

Если вы используете fd без параметров командной строки, он ведет себя немного как ls , за исключением того, что по умолчанию выводит список файлов в подкаталогах.

Введите следующее:

 fdfind 

Вывод отображается разными цветами для разных типов файлов и каталогов.

Реклама

Чтобы просмотреть файлы определенного типа, используйте параметр -e (расширение). Обратите внимание, что перед расширением не нужно ставить точку (.), а также не учитывать регистр.

Например, вы можете ввести следующее:

 fdfind -e png 

Теперь единственными перечисленными файлами являются файлы изображений PNG.

Чтобы найти один файл, введите его имя в командной строке, например:

 fdfind index.page 

Файл найден и находится в подкаталоге. Нам не нужно было fd на рекурсивный поиск.

Чтобы поиск начался в определенном каталоге, укажите путь к файлу в командной строке. Следующая команда запустит поиск в каталоге «/etc» и поиск файлов, которые содержат «passwd» в имени файла:

 fdнайти пароль/и т.д. 

Здесь мы ищем все файлы исходного кода C, которые содержат «coord» в имени файла:

 fdfind -ec координата 

Были найдены два совпадающих файла.

фд и гит

Git — чрезвычайно популярная система контроля версий исходного кода. Если вы используете Git на своем компьютере, вы, вероятно, используете файлы «.gitignore», чтобы указать Git, с какими файлами ему следует работать, а какие можно игнорировать. По умолчанию fd учитывает настройки в ваших файлах «.gitignore».

Реклама

В этом каталоге у нас есть репозиторий Git и файл «.gitignore». Набираем следующее:

 лс -адл .git* 

Давайте попросим fd перечислить все файлы, которые содержат «coord» в имени файла. Затем мы повторим поиск и воспользуемся опцией -I (без игнорирования). Это говорит fd игнорировать настройки в файле «.gitignore» и сообщать о каждом соответствующем файле.

Чтобы сделать все это, мы набираем следующее:

 координаты fdfind
 fdнайти координату -I 

Два дополнительных файла во втором наборе результатов являются объектными файлами. Они создаются при компиляции файловой программы. Затем компоновщик использует их для создания окончательной исполняемой версии программы.

Объектные файлы обычно игнорируются программами контроля версий исходного кода. Они создаются заново каждый раз, когда вы компилируете свою программу, поэтому вам не нужно хранить их копии. В файле «.gitignore» есть запись, которая предписывает Git игнорировать объектные файлы, и по умолчанию fd их тоже игнорирует.

Параметр -I (без игнорирования) заставляет fd возвращать все, что он находит, а не руководствоваться файлом «.gitginore».

Типы файлов и чувствительность к регистру

Вы можете попросить fd искать каталоги, файлы (в том числе исполняемые и пустые) и символические ссылки. Вы можете сделать это, используя параметр -t (тип), за которым следует одна из следующих букв:

  • ф : файл.
  • д : Справочник.
  • l : Символическая ссылка.
  • x : исполняемый файл.
  • e : Пустой файл.

Следующее ищет каталог с именем images:

 fdfind -td изображения 

Реклама

Найдено совпадение, на один подкаталог ниже текущего.

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

 fdfind -tf гео
 fdfind -tf гео 

В первой команде мы использовали шаблон поиска в нижнем регистре, из-за чего fd работала без учета регистра. Это означает, что и «гео», и «гео» являются допустимыми совпадениями.

Наша вторая команда содержала символы верхнего регистра, из-за чего fd работала с учетом регистра. Это означает, что только «Гео» является допустимым соответствием.

Выполнение команды

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

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

 fdfinf -e zip 

Реклама

С опцией -x (exec) вы можете передать каждый найденный файл другой команде для обработки ею. Например, мы можем ввести следующее, чтобы вызвать утилиту unzip для распаковки нашего ZIP-файла («{}» — это заполнитель, представляющий найденный файл):

 fdfind -e zip -x разархивировать {}

Это разархивирует файл в текущем рабочем каталоге. Если мы хотим, чтобы он был распакован в каталог, содержащий ZIP-файл, мы можем использовать один из следующих заполнителей:

  • {} : Полный путь к файлу и имя найденного файла.
  • {/} : имя найденного файла.
  • {//} : каталог, содержащий найденный файл.
  • {/.} : имя найденного файла без расширения.

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

 fdfind -e zip -x распаковать {} -d {//} 

Затем ZIP-файл находится и распаковывается в родительском каталоге.

Ваш поиск?

Поскольку он с такой простотой охватывает наиболее распространенные варианты использования, fd может легко стать вашей командой «найти». Всякий раз, когда вам понадобятся его более продвинутые функции, вы всегда можете вернуться к этому опытному ветерану, find .

СВЯЗАННЫЕ С: Лучшие ноутбуки с Linux для разработчиков и энтузиастов