You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在awk中对指定列应用正则,实现ls输出按文件类型自定义着色

修改后的完整代码

la() {
     ls -lhAXF "$@" | awk '
     BEGIN {
         FPAT = "([[:space:]]*[^[:space:]]+)";
     } {
         $1 = "\033[1m" "\033[31m" $1 "\033[0m";
         $2 = "\033[1m" "\033[32m" $2 "\033[0m";
         $3 = "\033[1m" "\033[33m" $3 "\033[0m";
         $4 = "\033[34m" $4 "\033[0m";
         $5 = "\033[1m" "\033[35m" $5 "\033[0m";
         $6 = "\033[1m" "\033[36m" $6 "\033[0m";
         $7 = "\033[1m" "\033[37m" $7 "\033[0m";
         $8 = "\033[1m" "\033[33m" $8 "\033[0m";
         # 第9列按规则着色,匹配顺序优先判断隐藏文件夹避免误判
         if ($9 ~ /^\s*\./) {
             # 隐藏文件夹:去除前置空格后以.开头
             $9 = "\033[1;35m" $9 "\033[0m";
         } else if ($9 ~ /\/\s*$/) {
             # 普通文件夹:末尾为/
             $9 = "\033[1;34m" $9 "\033[0m";
         } else {
             # 普通文件:其余未匹配内容
             $9 = "\033[0;37m" $9 "\033[0m";
         }
         print
     }'
}

说明

  • 完全适配Debian 11自带的GNU Awk语法,原有列着色逻辑无修改
  • 匹配优先级调整为优先判断隐藏文件夹,避免同时满足「末尾带/」规则的隐藏文件夹被误识别为普通文件夹
  • 正则匹配适配了FPAT捕获列自带前置空格的特性,不会出现匹配失效问题
  • 可自行修改ANSI颜色码调整显示效果,现有配色为:隐藏文件夹亮紫色、普通文件夹亮蓝色、普通文件亮白色

内容的提问来源于stack exchange,提问作者Nasrun Minallah Bin Piee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:15:00