linux - 如何获取自上次使用 bash 修改文件以来的时间(以秒为单位)?

我需要获取自上次修改文件以来的时间(以秒为单位)。 ls -l 不显示它。

最佳答案

date 的 GNU 实现有一个 -r 选项来打印文件的最后修改日期而不是当前日期。 我们可以使用格式说明符 %s 来获取以秒为单位的时间, 方便计算时差。

lastModificationSeconds=$(date +%s -r file.txt)
currentSeconds=$(date +%s)

然后你可以使用算术上下文来计算差异,例如:

((elapsedSeconds = currentSeconds - lastModificationSeconds))
# or
elapsedSeconds=$((currentSeconds - lastModificationSeconds))

您也可以直接计算和打印经过的秒数,无需临时变量:

echo $(($(date +%s) - $(date +%s -r file.txt)))

不幸的是,date 的 BSD 实现(例如在 Mac OS X 中)不支持 -r 标志。要获得最后修改秒数,您可以改用 stat 命令,正如其他答案所建议的那样。 一旦你有了它,剩下的过程就是计算经过的秒数。

https://stackoverflow.com/questions/19463334/

相关文章:

linux - 在 Linux 中的特定行向文件添加文本

regex - 在 Linux 中,名称与正则表达式匹配的文件的磁盘使用情况?

linux - Elasticsearch 无法写入日志文件

linux - 如何从目录复制内容而不是符号链接(symbolic link)?

linux - 如何获取unix数据文件中每行的前n个字符

linux - 如何从 Bash 中的字符串中删除所有非数字字符?

linux - 无法覆盖符号链接(symbolic link) RedHat Linux

python - 比较两个图像的 python/linux 方式

linux - yum 可以告诉我哪些存储库提供了特定的包吗?

linux - 如何将 ISO8859-15 转换为 UTF8?