Действие -printf
специфично для GNU find, поэтому оно недоступно на платформах, которые не запускают GNU find. Только невстроенный Linux и Cygwin запускают GNU find, если вы не установили его отдельно.
Вы можете установить GNU find на Solaris .
В качестве альтернативы вы можете переписать свой сценарий, чтобы использовать только переносимые функции. Универсального способа перевода -printf
не существует: для разных спецификаторов потребуются разные инструменты. Для % f
и % h
это просто, поскольку это всего лишь части имени файла. Если имя файла находится в переменной оболочки x
, вы можете использовать конструкции раскрытия параметров для извлечения базового имени (удалите префикс * /
) и имени каталога (удалите суффикс / *
).
find . -type f -exec sh -c 'for x do printf %s,%s\\n "${x##*/}" "${x%/*}"; done' sh {} +