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

UNIX Shell脚本如何获取文件日期?ls无年份显示问题求助

在老版本UNIX中获取文件完整日期的方法

因为你的UNIX版本不支持stat和ls的--full-time/--time-style选项,下面是几个可行的替代方案:

1. 使用Perl一行命令

Perl在绝大多数老UNIX系统上都预装了,你可以用它直接读取文件的修改时间并格式化输出:

perl -e '@stat = stat("your_file"); print scalar localtime($stat[9]), "\n"'

解释:

  • stat("your_file") 获取文件的所有属性,其中第10个元素(索引9)是文件的修改时间戳(epoch时间)
  • localtime($stat[9]) 将时间戳转换为本地时间格式,scalar 让它输出字符串形式(比如 Wed Oct 11 14:32:05 2023)

如果需要自定义日期格式(比如YYYY-MM-DD HH:MM:SS),可以用:

perl -e '@stat = stat("your_file"); ($sec,$min,$hour,$mday,$mon,$year) = localtime($stat[9]); printf "%04d-%02d-%02d %02d:%02d:%02d\n", $year+1900, $mon+1, $mday, $hour, $min, $sec'

2. 利用find命令的格式化输出

部分老UNIX的find支持-printf参数,可以直接输出完整日期:

find /path/to/your_file -maxdepth 0 -printf "%TY-%Tm-%Td %TH:%TM:%TS %p\n"

如果你的find不支持-printf,可以试试部分商用UNIX自带的ls特殊选项——比如HP-UX的ls -E会显示完整时间戳(含年份),结合find批量处理:

find . -name "your_file" -exec ls -ldE {} \;

3. 使用date命令结合文件时间戳

如果你的系统支持date命令的-r选项(读取文件修改时间),可以直接格式化输出:

date -r your_file "+%Y-%m-%d %H:%M:%S"

注意:部分老UNIX的date可能没有-r选项,需要先测试可用性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:35:04