为包含指定文件的目录自定义 ls 颜色

为包含指定文件的目录自定义 ls 颜色

如何用 word 对包含文件的目录进行着色不正确里面?

例子:

我有 3 个包含日志文件的目录。

dir_a/log
dir_b/log
dir_c/log

dir_c中的文件log包含word不正确 是否可以得到如下所示的彩色 ls 输出?

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

答案1

这应该完成这项工作:
文件夹内的文件和给定文件夹内的文件内的文本中的“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

“给定文件夹中的文件夹内的文件内的文本不正确”:

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

答案2

不,至少在 ls 当前的实现中是这样。您最多可以根据文件类型(图像、录音等,基于文件名掩码)、条目类型(文件、目录、套接字等)以及部分权限(可执行标志)来选择颜色。您无法为目录应用颜色,甚至取决于它包含的文件,更不用说内容这些文件。

相关内容