カラー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
持つ未テストこのスクリプトに問題があります。これは単なる概念です。
1つの問題はシンボリックリンクです...泥水...
現状のまま、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 

おすすめ記事