컬러 FIND 출력? 에서 컬러 출력을 얻을

find 명령 에서 컬러 출력을 얻을 있습니까? 즉, 발견 된 각 항목의 경로에서 디렉토리는 파란색이고 실행 가능한 스크립트는 녹색입니다. GNU findutils 4.4.2 버전을 사용하고 있습니다.

편집-명확히하기 위해 각 결과는 다음과 같이 강조 표시됩니다.

./path/to/file.sh
  ^    ^  ^
  |    |  L green
   blue

(예를 들어, 실행중인 경우 find . -type f).



답변

업데이트 : 새로운 (다른) 스크립트를 추가했습니다 … Ignacio Vazquez-Abrams 요점이 있습니다. 질문은 실제로 executable scripts are green, et cetera..를 묻습니다 . 괜찮아 …이 답변의 끝에 그런 (시제품) 스크립트를 찾을 수 있습니다.


첫 번째 (원본) 섹션에 관한 것입니다 grcgrcat.

작동해야합니다. grc로 ( enzotib이 뾰족한 아웃을 갖는다 .. 패키지 이름이다 grc.. 예에서 사용한 서브 유틸리티이다grcat

generic colouriser for everything

generic colouriser, can be used to colourise logfiles,
output of commands, arbitrary text....
configured via regexp's.

다음 예제는 인쇄

  • ./ 자홍색으로
  • bin/cpp/ 청록색
  • bigint 굵은 흰색

아직 설정 파일을 처리하는 방법을 완전히 정리하지는 않았지만 원하는대로 할 것입니다 (한 번 길 들이면됩니다). 하위 디렉토리가없는 파일의 경우 색상 순서가 표현식과 동일한 순서가 아닌 것 같습니다.
나는 가능하다고 가정하지만 (현재 조금 바쁘다) …

echo "# my config file
regexp=(\./)(.*/)([^/]+)
colours=bold white,magenta,cyan
">$HOME/.grc/findhi

find . -maxdepth 3 -name '*' | grcat findhi

새로운 이그나시오 영감 스크립트 는 다음과 같습니다. 🙂

단일 경로를의 첫 번째 인수로 사용하는 경우 작동합니다 find. 이 스크립트
에는 UNTESTED 문제가 있습니다. 그것은 개념 일뿐입니다.
한 가지 문제는 다음과 같습니다. Symbolic Links … murky waters … 그대로, 알 수없는 유형 (예 : 심볼릭 링크)이 발생
하면를 인쇄 한 ERROR다음 계속해서 처리합니다.
덕분에 enzotib에 대한 tput예.

dircol=$(tput bold ;tput setaf 4)
coloff=$(tput sgr0)

root="$HOME"       # define path here, not in 'find` arg
root="${root:-.}"  # default to '.'
root="${root%/}/"  # add trailing '/'
#
find "$root" -maxdepth 1 -name '*' -printf "%y %P\n" |
  while read -r line ;do
    case $line in
       d   ) printf "%s\n" "$dircol$root$coloff";;
       d\ *) printf "%s\n" "$dircol$root${line:2}$coloff";;
       f\ *) l="$root${line:2}"
             d="${l%/*}/"
             f="${l##*/}"
             cd -P "$d"
             printf "%s" "$dircol$d$coloff"
             ls --color=always -R1 "$f"
             cd - >/dev/null
             ;;
          *) printf "ERROR - type not yet catered for\n";;
    esac
  done 


답변

-exec대부분의 작업을 수행 하는 데 사용할 수 있습니다 (내 솔루션은 디렉토리 부분을 다르게 채색하지 않습니다). -print당신의 find명령 에 있다면 -exec ls --color -d; 암시 적 인쇄를 사용하는 경우 추가하십시오. 이것은 귀하의 ls지원 --color옵션을 가정합니다 .

find . -exec ls --color -d {} \;


답변

이것은 파일 유형별이 아닌 경로 및 파일 이름에 대한 두 가지 색상 강조 표시 만 수행합니다 ls.

grep일치하는 부분과 일치하지 않는 부분에 대해 올바른 색상으로 출력 색상을 구성하고 파일 이름을 일치시킵니다.

$ export GREP_COLORS="sl=0;33;49:ms=1;34;49"
$ find /etc/ -type f | head | grep --color=always '^\|[^/]*$'

화면 색상

변수를 덮어 쓰지 않으려면 GREP_COLORS다음에 대해서만 설정하십시오 grep.

$ find /etc/ -type f | head | GREP_COLORS="sl=0;33;49:ms=1;34;49" grep --color=always '^\|[^/]*$'

(더 이상 사용되지 않는 변수에 대한 정의 GREP_COLOR는의 것보다 우선 순위가 낮습니다 GREP_COLORS)

컬러 코드에 대한 내용은 colortest-16패키지에서 colortest,
및 부 “로 설정 그래픽 렌 디션” ANSI 터미널 명령 시퀀스 .


답변

나는 -exec 아이디어를 좋아했다. 이 함수를 만드는 데 사용했습니다.

function ff {
    find . -name $1 -exec ls -G -d {} \;
}


답변