настроить цвет 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 

  • Tcsh: поиск истории с помощью Ctrl-P и Ctrl-N
  • Как проверить, нет ли строки в tcsh
  • Несогласованность перенаправления stderr между tcsh и другими оболочками
  • Скрипт не выполняется в соответствии с ожиданием
  • Как изменить дерево дерева каталогов по записи
  • Искать предыдущую команду с тем же префиксом, когда я нажимаю Up в командной строке
  • Почему некоторые ключи keykey по умолчанию не работают в tcsh?
  • FreeBSD csh, TAB, чтобы показать доступные варианты?
  • 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 - лучшая ОС в мире.