Можно ли раскрасить вывод команды find с флагом -printf?

Вы можете использовать бинарный порт Windows напрямую: http://adoxa.altervista.org/global/

Он также может быть вызван из CYGWIN после добавления в PATH env.

3
22.05.2019, 06:23
1 ответ

Это не совсем правильно, последовательность цветового кода и %pдолжны быть в одном аргументе для -printfи , а не в отдельных.

Флаг -printfв findотличается от обычного встроенного -в bash. Версия findпринимает аргументы формы -printf format, в то время как встроенная версия -принимает printf <FORMAT> <ARGUMENTS...>, что означает, что первая не принимает спецификаторы формата -, за которыми следуют аргументы, а только одну строку с определенными параметрами. Опция -printfдля findпредоставляет различные последовательности для описания атрибутов файла. Значение %sвнутри find -printfотличается от определения спецификации формата встроенным -.

Также я предполагаю, что printfизfind(команды GNU findutils )поддерживает только цветовые коды ANSI и не принимает управляющие последовательности \e(, в отличие от встроенной -в printfкоманды оболочка GNU,на автономной утилите GNU printf), но ее восьмеричный эквивалент только (здесь 033, предполагая систему на основе ASCII -):

find. -type l -not -xtype l -printf '\033[1;34m%p\033[m -> %l\n'

Вы можете добавить цветовой код ANSI по вашему выбору к вышеуказанному.

Или вы можете использовать оператор цитирования $'...', который можно найти в нескольких оболочках, включая оболочку GNU, которая распознает\e:

find. -type l -not -xtype l -printf $'\e[1;34m%p\e[m -> %l\n'

Выше \eи \nрасширяются до символов ESC и NL перед передачей в find.

6
27.01.2020, 21:17

Теги

Похожие вопросы