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

z0qdvdin  于 2022-12-11  发布在  Linux
关注(0)|答案(3)|浏览(277)

我需要获得文件上次修改后的时间(以秒为单位)。ls -l没有显示。

0ve6wy6x

0ve6wy6x1#

没有简单的命令可以获取文件修改后的时间(以秒为单位),但可以通过两个部分计算该时间:

  • date +%s:自Epoch以来的当前时间(以秒为单位)
  • date -r path/to/file +%s:自Epoch以来指定文件的最后修改时间(秒)

使用这些值,可以应用简单的Bash算法:

lastModificationSeconds=$(date -r path/to/file +%s)
currentSeconds=$(date +%s)
((elapsedSeconds = currentSeconds - lastModificationSeconds))

您也可以直接计算并打印经过的秒数,而不使用临时变量:

echo $(($(date +%s) - $(date -r path/to/file +%s)))
wgx48brx

wgx48brx2#

在BASH中,将此值用于自上次修改以来的秒数:

expr `date +%s` - `stat -c %Y /home/user/my_file`
2admgd59

2admgd593#

我知道标签是Linux,但是stat -c语法在OSX上不适用。

echo $(( $(date +%s) - $(stat -f%c myfile.txt) ))

并作为函数调用,文件名为:

lastmod(){
     echo "Last modified" $(( $(date +%s) - $(stat -f%c "$1") )) "seconds ago"
}

相关问题