Можно сделать это с параметрами, передаваемыми по имени к chmod:
chmod u=rwX,go=rX {}
Капитал X
ключевая роль здесь, которая изменяет разрешение на исполняемый файл, только если это - каталог. Дополнительную информацию см. в странице руководства.
ОБНОВЛЕНИЕ: я добавил новый (другой) сценарий... 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
Вы могли использовать -exec
сделать большую часть из того (мое решение не окрашивает часть каталога по-другому). Если Вы имеете -print
в Вашем find
команда, замените его -exec ls --color -d
; при использовании неявной печати добавьте это. Это принимает Ваш ls
поддержки --color
опция.
find . -exec ls --color -d {} \;
Мне понравилось - исполнительная идея. Я использовал его для создания этой функции:
function ff {
find . -name $1 -exec ls -G -d {} \;
}
Это делает только двухцветный подсветка для пути и имени файла, а не вещью PER-FILETYPE LS
:
Настроить цвета GREP
Выход правильного способа для сопоставления и непревзойденной части, и сопоставить имя файла:
$ export GREP_COLORS="sl=0;33;49:ms=1;34;49"
$ find /etc/ -type f | head | grep --color=always '^\|[^/]*$'
Вы не хотите перезаписать переменную 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 .
grcat
утилита отgrc
пакет :) Вначале я испытал некоторые затруднения для понимания то, что Вы говорите. – enzotib 08.12.2011, 11:29