O comando
find . -type l -not -xtype l -printf "%p -> %l\n"
imprime todos os links simbólicos não quebrados no diretório .
. Eu quero colorir essa saída para que a %p
parte fique azul. eu tentei
find . -type l -not -xtype l -printf '\e[1;34m%-6s\e[m' "%p -> %l\n"
mas isso resulta no erro find: warning: unrecognized escape \e
. Alguma idéia de como corrigir isso?
Não está muito correto, a sequência do código de cores e as
%p
necessidades devem estar no mesmo argumento-printf
e não em argumentos separados.O
-printf
sinalizador defind
é diferente do padrão embutido debash
. Afind
versão recebe argumentos de forma-printf format
enquanto a built-in recebeprintf <FORMAT> <ARGUMENTS...>
, o que significa que a primeira não aceita especificadores de formato seguidos por argumentos, mas apenas uma única string com opções definidas. A-printf
opção defind
fornece várias sequências para descrever os atributos do arquivo. O%s
interior dofind -printf
transmite um significado diferente da definição de especificação de formato do built-in.Também acho que o comando
printf
dofind
(GNU findutils) suporta apenas códigos de cores ANSI e não aceita as\e
sequências de escape (ao contrário do built-inprintf
do shell GNU, noprintf
utilitário GNU autônomo), mas seu equivalente octal apenas (aqui 033 assumindo um sistema baseado em ASCII):Você pode adicionar o código de cor ANSI de sua escolha acima.
Ou você pode usar o
$'...'
operador de citação encontrado em alguns shells, incluindo o shell GNU, que reconhece\e
:Acima de
\e
e\n
são expandidos para os caracteres ESC e NL antes de serem passados parafind
.