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

Linux bash下如何在列出当前路径所有文件时高亮最近N分钟修改的文件

实现全量ls输出并高亮近N分钟修改文件的方案

方案1:grep+find 单行命令实现

直接执行以下命令即可输出ls -al的全量结果,同时高亮最近60分钟内修改的文件:

ls -al | grep --color=always -E "$(find . -maxdepth 1 -mmin -60 -printf '%f\n' | grep -v '^\.$' | sed 's/[][()\.^$*+?{}|]/\\&/g' | tr '\n' '|' | sed 's/|$//')|$"

需要调整时间范围时,把-mmin -60里的60替换为你需要的分钟数即可。

方案2:封装为shell函数方便长期使用

把以下内容写入你的~/.bashrc(bash用户)或~/.zshrc(zsh用户),重载配置后即可直接调用:

lsh() {
    # 第一个参数为指定的分钟数,不填默认60分钟
    local target_min="${1:-60}"
    ls -al | grep --color=always -E "$(find . -maxdepth 1 -mmin -"${target_min}" -printf '%f\n' | grep -v '^\.$' | sed 's/[][()\.^$*+?{}|]/\\&/g' | tr '\n' '|' | sed 's/|$//')|$"
}

使用示例:

  • 执行lsh:高亮最近60分钟修改的文件
  • 执行lsh 30:高亮最近30分钟修改的文件

方案3:自定义高亮颜色(awk实现)

如果需要调整高亮颜色,可使用awk注入ANSI颜色码实现,以下示例为亮红色高亮,修改color变量的数值即可换色:

ls -al | awk -v target_min=60 -v color="\033[1;31m" -v reset="\033[0m" '
NR==FNR { if ($0 != ".") mod_file[$0] = 1; next }
{
    out = $0
    for (f in mod_file) {
        if (index(out, f)) gsub(f, color f reset, out)
    }
    print out
}' <(find . -maxdepth 1 -mmin -60 -printf '%f\n')

常用颜色码参考:

  • 亮红色:1;31
  • 亮绿色:1;32
  • 亮黄色:1;33
  • 亮蓝色:1;34

注意事项

  • 上述方案均默认仅扫描当前目录(不递归子目录),和ls -al的默认行为一致
  • 已兼容带特殊字符的普通文件名,极端场景下(如文件名含换行符)可能会出现匹配偏差

内容的提问来源于stack exchange,提问作者Defisher

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:27:03