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

求AWK命令:打印指定目录下至少1小时前修改的file开头文件名

用AWK实现指定文件的修改时间过滤需求

要实现类似find /tmp/test/ -mmin +60且筛选file开头文件的功能,AWK本身无法直接读取文件系统属性,需要结合外部命令获取文件的修改时间信息,再用AWK做过滤判断。以下是可行的命令(支持文件名含空格的场景):

current_time=$(date +%s)
stat -c "%Y|%n" /tmp/test/file* | awk -F'|' -v now="$current_time" '$1 <= now - 3600 {print $2}'

各部分作用:

  • current_time=$(date +%s):获取当前时间的Unix时间戳(从1970年1月1日至今的总秒数)
  • stat -c "%Y|%n" /tmp/test/file*:针对/tmp/test/下所有以file开头的文件,输出格式为「修改时间戳|完整文件名」的内容,%Y对应文件修改时间的Unix时间戳,%n对应完整文件名
  • awk -F'|' -v now="$current_time" '$1 <= now - 3600 {print $2}':用-F'|'指定分隔符为竖线,将当前时间戳通过-v参数传入AWK作为变量now;判断文件修改时间戳是否早于当前时间减去3600秒(即1小时前),满足条件则打印对应的完整文件名

如果你的系统中stat命令不支持%Y参数(比如部分BSD系统),可以改用ls命令结合AWK处理:

current_time=$(date +%s)
ls -lT /tmp/test/file* | awk -v now="$current_time" '$7 <= now - 3600 {print $9}'

注:ls -lT会输出Unix时间戳格式的修改时间,不同系统的ls列数可能有差异,需要根据实际输出调整$7(时间戳列)和$9(文件名列)的位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:13:21