カラー出力は可能ですか?探す注文する?つまり、見つかった各エントリのパスでディレクトリは青色、実行可能なスクリプトは緑色などですか?バージョン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
...まあ...この答えの終わりにそのような(プロタイプ)スクリプトを見つけることができます。
最初の(元の)部分はgrc
sumsに関するものです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
未知のタイプ(シンボリックリンクなど)が見つかった場合は、印刷してそのタイプを処理し続けます。例を聞いてくれて
ありがとう。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
答え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_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
でしょ--maxdepth
うfind
。次に、その色をリストします。
次の形式のパラメータを使用します。[depth [root folder]]
使用例:
lr
lr 5
lr 2 Documents