Какая альтернатива для `find -type d` на Mac?

В линуксе find -type d работает, чтобы перечислить все подкаталоги, игнорируя файлы.

Однако, когда я запускаю это на Mac (High Sierra), я получаю ошибку: find: illegal option -- t,

Изучая Google, я не нашел какой-либо очевидной альтернативы для эквивалента командной строки, за исключением ответов, предлагающих использовать ls и проанализировать вывод через grepили есть решения для приложений с графическим интерфейсом или для пользователей, не использующих командную строку (с помощью поиска и т. д.).

Сценарий использования должен был бы передать этот вывод нечеткому искателю, который ожидает разделенный строкой список элементов. Например, я могу сделать это с помощью файлов и ripgrep с: rg --files -g "" | fzy, Ripgrep, похоже, не поддерживает --folders или что-то подобное из моего беглого просмотра на трекере GitHub.

В линуксе find -type d | fzy "просто работает". Вплоть до установки других пакетов, но я очень надеялся на что-то, что просто предустановлено.

Я могу уйти от этого с помощью некоторых сценариев, но я бы хотел услышать о лучшей практике здесь.

1 ответ

Я думаю твой find действительно понимает -type d потому что это требуется POSIX. Однако синтаксис, который вы использовали:

find -type d

не POSIX-совместимый, поэтому не переносимый. Правильный переносимый синтаксис:

find path -type d

Linux версии find приму ./ если вы опустите path, На Mac find ожидает что-то вроде этого:

find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]
find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]

Ты хочешь -type быть частью expression но твой find потребности path или же -f path в его аргументах командной строки. Прежде чем он получает один, он пытается интерпретировать другие аргументы как параметры, поэтому ваш -type на самом деле -t -y -p -e; здесь нет -t Опция определена, таким образом illegal option -- t,

(Сравните этот ответ).

Решение простое: укажите path в явном виде. Mac эквивалент Linux find -type d является:

find ./ -type d

Обратите внимание, что это работает и в Linux.

Другие вопросы по тегам