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

如何获取变量中存储文件的最后修改时间?date命令报错求助

问题分析与解决

报错原因

你的oldestfile变量存储的是ls输出的完整行内容(包含权限、所有者、文件大小等字段),而date -r仅接受单个文件名/路径作为参数。当你执行date -r $oldestfile时,shell会把整行内容按空格拆分成多个参数传给date,导致它识别到多余的操作数(比如jssteele89),从而报错。

解决步骤

1. 修正变量赋值,仅提取目标目录的路径/名称

替换原来的变量赋值命令,只提取ls输出的最后一列(即文件名):

oldestfile=$(ls -Ulta f41895.archivetosmarsh.com/emailarchive*/Maildir | grep .duplicated999 | tail -n 1 | awk '{print $NF}')

如果要更可靠地处理特殊文件名(比如含空格的名称),推荐用find命令替代ls:

oldestfile=$(find f41895.archivetosmarsh.com/emailarchive*/Maildir -name ".duplicated999" -type d | sort | tail -n 1)

2. 获取EPOCH格式的最后修改时间

用date -r结合+%s参数输出时间戳,注意给变量加双引号避免参数拆分:

date -r "$oldestfile" +%s

执行后就能得到目标目录的最后修改时间戳(EPOCH格式)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:42:46