Разница между Mac `find` и Linux` find`

Я унаследовал script как часть процесса сборки для приложения, и когда я запускаю его на сервере сборки (Ubuntu Precise), он работает нормально, но когда я запускаю его на своем mac, я получаю "незаконный вариант" - t ". Команда с проблемами проста, это просто вызов find:

find -type f -not -path [...]

При тестировании я обнаружил, что это параметр -type, который имеет проблемы на моем Mac. Если я запустил вместо этого:

find ./ -type f -not -path [...]

Он работает, но оба работают (по-видимому, эквивалентно) в ящике Linux. Поэтому мой вопрос заключается в том, существуют ли существенные различия между OSX (BSD) find binary и Linux (GNU?) find, и мои изменения в script (добавление пути ./ в начале) сломают что-либо что я еще не обнаружил?

Ответ 1

Стандарт задает путь (./ в вашем примере) как обязательный. find на MacOS следует стандарту.

GNU find (тот, который доступен в Linux) позволяет путь быть дополнительным. Если не указано, текущий каталог считается путём. В Linux пользователь находит

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

(обратите внимание, что путь указан в [...], указывая, что он является необязательным.

Рекомендуется указать путь.