ワイルドカードの代わりに正規表現に基づいてlsカラーリストを設定する

ワイルドカードの代わりに正規表現に基づいてlsカラーリストを設定する

LS_COLORS変数にカラーマッチングの正規表現パターンを設定できますか?だから代わりに

*.jpg=38;5;220

できますか?

\.(jpg|gif)=38;5;220

これは単なる例なので、もっと複雑にしたいと思います。私はこれについてあまりにも多くを求めていますか?ターミナルカラースキームを好む他の方法はありますか?

ところで、私はzshを使っているので、そこでできますが、bashではできないと問題にはなりません。

答え1

これはlsユーティリティの機能です。GNUコアツール。シェルに依存しません。構文は文書化されていません(dircolorsここで使用して調べる必要があります)。ただし、ソースコードを簡単に見てみると、名前でファイルを照合する唯一の方法は、*文字列とサフィックスでなければならない文字列を使用することです。一致させるファイル名。文字列は、エスケープシーケンス(例:==改行)を除いて、\文字通り解釈されます。^\n^J

したがって、同じパターンで異なる拡張を一致させることはできません。ただし、シェルプログラミング構成を使用して以下を構築できますLS_COLORS

for ext in jpg gif; do LS_COLORS="$LS_COLORS:*.$ext=38;5;220"; done

関連情報