настроить цвет ls для каталогов содержат указанные файлы / с

Как я могу раскрасить каталоги, содержащие файлы со словом INCORRECT внутри?

Пример:

У меня есть 3 каталога, которые содержат файл журнала.

dir_a/log dir_b/log dir_c/log 

Файл log in dir_c содержит слово INCORRECT Возможно ли получить раскрашенный ls вывод следующим образом?

 dir_a --> blue dir_b --> blue dir_c --> red 

  • Проблема: слияние команды с конвейером и аргументом
  • Как оболочка знает дома (дома)?
  • Подавлять сообщения о запуске на stdout?
  • Если вы измените переменную среды в другой оболочке, она изменится или останется неизменной в других оболочках?
  • как заставить команду tcsh promt показать количество заданий LSF?
  • установить псевдоним для каталога
  • setenv из awk в tcsh
  • проверка статуса для команды sleep
  • 2 Solutions collect form web for “настроить цвет ls для каталогов содержат указанные файлы / с”

    Это должно сделать работу:
    «INCORRECT» в тексте внутри файлов внутри папок и файлов в данной папке:

     SEARCH_DIR="/var/log" for i in $(find $SEARCH_DIR -maxdepth 1 -mindepth 1); do DIR_CHECK=$(grep INCORRECT $i) [[ "$DIR_CHECK" =~ "INCORRECT" ]] \ && echo -e "\e[00;31m$i\e[00m" \ || echo -e "\e[00;32m$i\e[00m" done 

    «INCORRECT в тексте внутри файлов внутри папок в данной папке»:

     SEARCH_DIR="/var/log" for i in $(find $SEARCH_DIR -maxdepth 1 -mindepth 1 -type d); do DIR_CHECK=$(grep INCORRECT $i) [[ "$DIR_CHECK" =~ "INCORRECT" ]] \ && echo -e "\e[00;31m$i\e[00m" \ || echo -e "\e[00;32m$i\e[00m" done 

    «INCORRECT» в имени папок и файлов в данной папке:

     SEARCH_DIR="/var/log" for i in $(find $SEARCH_DIR -maxdepth 1 -mindepth 1); do DIR_CHECK=$(echo $i | grep INCORRECT) [[ "$DIR_CHECK" =~ "INCORRECT" ]] \ && echo -e "\e[00;31m$i\e[00m" \ || echo -e "\e[00;32m$i\e[00m" done 

    «INCORRECT» в имени папок в указанных папках:

     SEARCH_DIR="/var/log" for i in $(find $SEARCH_DIR -maxdepth 1 -mindepth 1 -type d); do DIR_CHECK=$(echo $i | grep INCORRECT) [[ "$DIR_CHECK" =~ "INCORRECT" ]] \ && echo -e "\e[00;31m$i\e[00m" \ || echo -e "\e[00;32m$i\e[00m" done 

    Нет, по крайней мере, в текущих реализациях ls. Максимум, который вы можете сделать, – это выбирать цвета в зависимости от типа файла (изображение, звукозапись и т. Д. На основе маски имени файла), тип ввода (файл, каталог, сокет и т. Д.) И, частично, разрешения (исполняемые флаги). Вы не можете применять цвет для каталога, зависящий даже от файлов, которые он содержит, не говоря о содержимом этих файлов.

    Linux и Unix - лучшая ОС в мире.