我需要获取自上次修改文件以来的时间(以秒为单位)。 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/