根据正则表达式而不是 globbing 设置 ls 颜色列表

Fal*_*rri 5 ls shell colors

是否可以在 LS_COLORS 变量中设置用于颜色匹配的正则表达式模式?所以而不是仅仅

*.jpg=38;5;220

我可不可以做

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

这只是一个例子,我想变得更复杂。我对这个要求太多了吗?有没有另一种方法可以让我变得更漂亮?

顺便说一句,我正在使用 zsh,所以如果我可以在那里使用但不能使用 bash,那很好。

Gil*_*il' 6

这是GNU coreutils 中ls实用程序的一个特性。它不依赖于外壳。语法没有记录(你应该从那里使用和计算它),但快速查看源代码表明按名称匹配文件的唯一方法是使用后跟一个字符串,该字符串必须是 a 的后缀要匹配的文件名。字符串被字面解释,不同之处在于和引入转义序列(例如= =换行)。dircolors*\^\n^J

所以你不能用相同的模式匹配不同的扩展。但是您可以使用 shell 编程结构来构建LS_COLORS

for ext in jpg gif; do LS_COLORS="$LS_COLORS:*.$ext=38;5;220"; done
Run Code Online (Sandbox Code Playgroud)