Ls

為包含指定文件的目錄自定義 ls 顏色

  • February 14, 2013

如何為目錄著色,其中包含內部帶有單詞INCORRECT的文件?

例子:

我有 3 個包含日誌文件的目錄。

dir_a/log
dir_b/log
dir_c/log

dir_c 中的文件日誌包含單詞INCORRECT 是否可以獲得如下彩色 ls 輸出?

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

這應該可以完成工作:

文件夾內的文件和給定文件夾內的文件內的文本中的“不正確”:

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

給定文件夾中的文件夾和文件名稱中的“不正確”:

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

給定文件夾中的文件夾名稱中的“不正確”:

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

引用自:https://unix.stackexchange.com/questions/64770