Разница между 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]
(обратите внимание, что путь указан в [...]
, указывая, что он является необязательным.
Рекомендуется указать путь.