O Solaris find não suporta a ação printf

0

Alguém pode fornecer comando igual ao Solaris para o seguinte comando

$ find . -type f -printf '%f,%h\n'

Depois de executar o código estou recebendo "má opção printf find: [-H | -L] lista de predicados erro de lista de predicado"

Printf não é suportado pelo ambiente Solaris UNIX

Por favor, consulte os seguintes links para mais informações:

link

link

Obrigado antecipadamente

    
por vinod kumar 30.08.2016 / 21:02

1 resposta

1

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 {} +
    
por 31.08.2016 / 03:47

Tags