컬러 FIND 출력?

컬러 FIND 출력?

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

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

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

(예: 실행되는 경우 find . -type f)

답변1

고쳐 쓰다:나는 새로운 (다른) 스크립트를 추가했습니다... Ignacio Vazquez-Abrams 트위스트와 함께: 질문은 executable scripts are green, et cetera...글쎄... 이 답변의 끝에서 그러한 (프로토타입) 스크립트를 찾을 수 있을 것입니다.


첫 번째(원본) 부분은 grcsums 에 관한 것입니다 grcat.

이것은 작동합니다 grc...(예:엔조팁이미 지적했습니다.. 패키지 이름은 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.
가지다테스트되지 않은이 스크립트에 문제가 있습니다. 이것은 단지 개념일 뿐입니다.
한 가지 문제는 심볼릭 링크입니다...진흙탕 물...
있는 그대로, ERROR알 수 없는 유형(예: 심볼릭 링크)이 발견되면 인쇄한 다음 해당 유형을 계속 처리합니다. 예시를 들어주셔서
감사합니다 .enzotibtput

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 

답변2

-exec대부분의 작업을 완료하는 데 사용할 수 있습니다 (내 솔루션은 디렉터리 섹션의 색상을 다르게 지정하지 않습니다). -print명령에 있는 경우 find로 바꾸세요 -exec ls --color -d. 암시적 인쇄를 사용하는 경우 추가하세요. 이는 귀하가 ls--color옵션을 지원한다고 가정합니다.

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

답변3

이는 각 파일 형식이 아닌 경로와 파일 이름에 대해 2색 강조만 수행합니다. ls:

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

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


화면 grep 색상

아마도 이 변수를 재정의하고 싶지 않을 것이므로 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 터미널 명령 시퀀스.

답변4

까지 확장답변: Peter O.:

.bashrc이 함수 정의를 또는 에 추가할 수 있습니다 .bash_aliases.

( lr목록 재귀를 의미하지만 원하는 대로 이름을 지정할 수 있습니다)

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


   case $# in
    2)
     root=$2
     depth=$1
     ;;
    1)
     root="."
     depth=$1
     ;;
    0)
     root="."
     depth=2
     ;;   
    *)
     echo "Specify only upto 2 arguments: [depth [root folder]]"
     return
     ;;
   esac

   root="${root%/}/"  # add trailing '/'
   
   find "$root" -maxdepth "$depth" -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
            ;; 
        # l\ *) printf "This is link.\n";;
        l\ *) l="$root${line:2}"
            d="${l%/*}/"
            f="${l##*/}"            
            cd -P "$d" 
            printf "%s" "$dircol$d$coloff"  
            ls --color=always -d1 "$f" | tr -d '\n' 
            printf " -> "
            readlink -f "$f"
            cd - >/dev/null
            ;; 
           *) printf "ERROR - type not yet catered for\n";;  
       esac
    done
}

먼저 를 구문 분석하면 location작동 --maxdepthfind것입니다. 그런 다음 해당 색상을 나열하십시오.

다음 형식의 매개변수를 사용합니다.[depth [root folder]]

사용 예:

lr 
lr 5
lr 2 Documents

관련 정보