Окрашенный НАХОДЯТ вывод?

Можно сделать это с параметрами, передаваемыми по имени к chmod:

 chmod u=rwX,go=rX {}

Капитал X ключевая роль здесь, которая изменяет разрешение на исполняемый файл, только если это - каталог. Дополнительную информацию см. в странице руководства.

13
08.12.2011, 07:03
4 ответа

ОБНОВЛЕНИЕ: я добавил новый (другой) сценарий... Ignacio Vazquez-Abrams имел точку: вопрос действительно просит executable scripts are green, et cetera.. хорошо... Вы найдете такой (прототип) сценарий в конце этого ответа.


Этот первый (исходный) раздел о grc и grcat.

Это должно работать; grc... (как enzotib указал.. Имя пакета grc ... Подутилита, используемая в примере, grcat

generic colouriser for everything

generic colouriser, can be used to colourise logfiles,
output of commands, arbitrary text....
configured via regexp's.

Следующая печать в качестве примера

  • ./ в пурпурном
  • bin/cpp/ в голубом цвете
  • bigint полужирным белый

Я не полностью разобрался, как это обрабатывает его файл конфигурации все же, но это похоже на него, сделает то, что Вы хотите (после того как Вы приручаете его).. например, для файла без подdir и цветной последовательности, кажется, не находится в той же последовательности как выражения.
Я предполагаю, что это возможно (но я немного занят в данный момент)...

echo "# my config file
regexp=(\./)(.*/)([^/]+)
colours=bold white,magenta,cyan
">$HOME/.grc/findhi

find . -maxdepth 3 -name '*' | grcat findhi

Вот вдохновленный сценарий нового Ignacio :)

Это работает, если Вы используете единственный путь в качестве первого аргумента к find.
В этом сценарии существуют проблемы UNTESTED. Это - только понятие.
Одна проблема: Символьные ссылки... темные воды...
Как есть это печатает ERROR когда это встречается с неизвестным типом (например, символьная ссылка) и затем продолжает обрабатывать мимо этого.
Благодаря enzotib для tput примеры.

dircol=$(tput bold ;tput setaf 4)
coloff=$(tput sgr0)

root="$HOME"       # define path here, not in 'find` arg
root="${root:-.}"  # default to '.'
root="${root%/}/"  # add trailing '/'
#
find "$root" -maxdepth 1 -name '*' -printf "%y %P\n" | 
  while read -r line ;do
    case $line in 
       d   ) printf "%s\n" "$dircol$root$coloff";;  
       d\ *) printf "%s\n" "$dircol$root${line:2}$coloff";;  
       f\ *) l="$root${line:2}"
             d="${l%/*}/"
             f="${l##*/}"
             cd -P "$d" 
             printf "%s" "$dircol$d$coloff"  
             ls --color=always -R1 "$f"
             cd - >/dev/null
             ;; 
          *) printf "ERROR - type not yet catered for\n";;  
    esac
  done 
9
27.01.2020, 19:53
  • 1
    Вы забыли говорить, что Вы обращаетесь к grcat утилита от grc пакет :) Вначале я испытал некоторые затруднения для понимания то, что Вы говорите. –  enzotib 08.12.2011, 11:29
  • 2
    я действительно пропустил то, что OP хотят другой цвет для различных типов файлов. –  enzotib 08.12.2011, 16:52
  • 3
    Ничего себе. Слишком много работы для ценности того для меня –  Kolob Canyon 22.09.2016, 19:21

Вы могли использовать -exec сделать большую часть из того (мое решение не окрашивает часть каталога по-другому). Если Вы имеете -print в Вашем find команда, замените его -exec ls --color -d; при использовании неявной печати добавьте это. Это принимает Ваш ls поддержки --color опция.

find . -exec ls --color -d {} \;
6
27.01.2020, 19:53
  • 1
    я не уверен, кто upvoted это, но я не полагаю, что они закончили читать вопрос (не, что я говорю, что этот ответ заслуживает соответствующего downvote хотя)... –  Ignacio Vazquez-Abrams 08.12.2011, 07:34

Мне понравилось - исполнительная идея. Я использовал его для создания этой функции:

function ff {
    find . -name $1 -exec ls -G -d {} \;
}
-1
27.01.2020, 19:53
  • 1
    Это, кажется, не производит цвет..? –  Leo Ufimtsev 05.05.2017, 19:27

Это делает только двухцветный подсветка для пути и имени файла, а не вещью PER-FILETYPE LS :

Настроить цвета GREP Выход правильного способа для сопоставления и непревзойденной части, и сопоставить имя файла:

$ export GREP_COLORS="sl=0;33;49:ms=1;34;49"
$ find /etc/ -type f | head | grep --color=always '^\|[^/]*$'


screen-grep-colored

Вы не хотите перезаписать переменную grep_colors , поэтому установите его только для GREP :

$ find /etc/ -type f | head | GREP_COLORS="sl=0;33;49:ms=1;34;49" grep --color=always '^\|[^/]*$'

(Определения TROM устаревшей переменной grep_color имеют менее приоритет, чем в grep_colors )

для цветовых кодов, см. Colortest-16 Пакет Colortest ,
и раздел «Установить графический оформление» в последовательностей командных последовательностей терминала ANSI .

4
27.01.2020, 19:53

Теги

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