customiza a cor ls para diretórios contendo arquivo / s especificados

3

Como posso colorir diretórios contendo arquivos com a palavra INCORRECT dentro?

Exemplo:

Eu tenho 3 diretórios que contêm arquivo de log.

dir_a/log
dir_b/log
dir_c/log

O log de arquivos em dir_c contém a palavra INCORRECT É possível obter saída ls colorida da seguinte forma?

dir_a --> blue
dir_b --> blue
dir_c --> red
    
por Roman Kaganovich 14.02.2013 / 09:49

2 respostas

1

Isso deve fazer o trabalho:
"INCORRECT" no texto dentro de arquivos dentro de pastas e arquivos dentro da pasta dada:

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

"INCORRECTO no texto dentro de arquivos dentro de pastas na pasta especificada":

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" em nome de pastas e arquivos em determinada pasta:

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" em nome das pastas em determinadas pastas:

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
    
por 14.02.2013 / 10:41
0

Não, pelo menos nas implementações atuais de ls. O máximo que você pode fazer é selecionar cores dependendo do tipo de arquivo (imagem, gravação de som, etc., baseado na máscara do nome do arquivo), tipo de entrada (arquivo, diretório, soquete etc.) e, parcialmente, permissões (flags executáveis). Você não pode aplicar cores para o diretório dependendo dos arquivos que ele contém, não dizendo sobre o conteúdo desses arquivos.

    
por 14.02.2013 / 10:11

Tags