A ação -printf
é específica do GNU find, por isso não está disponível em plataformas que não executam o GNU find. Somente Linux e Cygwin não-embarcados executam o GNU find, a menos que você o tenha instalado separadamente.
Você pode instalar o GNU find no Solaris .
Como alternativa, você pode reescrever seu script para usar somente recursos portáteis. Não há uma maneira genérica de traduzir -printf
: especificadores diferentes precisarão de ferramentas diferentes. Para %f
e %h
, é fácil, pois são apenas partes do nome do arquivo. Se o nome do arquivo estiver em uma variável de shell x
, você poderá usar construções de expansão de parâmetro para extrair o nome base (remova o prefixo */
) e o nome do diretório (remova o sufixo /*
).
find . -type f -exec sh -c 'for x do printf %s,%s\n "${x##*/}" "${x%/*}"; done' sh {} +