我正在尝试最后一次修改文件的日期。我使用变量作为日期,使用变量作为时间。
这将获取日期和时间,但我想使用-r
使用date
命令来反映上次修改日期的时间。我不确定如何在变量中使用它。
我将如何做到这一点?
以下是我的变数:
DATE="$(date +'%m/%d/%Y')"
TIME="$(date +'%H:%M')"
我尝试在时间和日期之前和之后放置-r
。
答案 0 :(得分:0)
我认为你在寻找
ls -lt myfile.txt
在第6列中,您将看到文件何时被修改。
或者您可以使用stat myfile.txt
来检查文件的修改时间。
答案 1 :(得分:0)
虽然人们可能会告诉你,你应该不解析ls
的输出,如果您的文件名包含制表符,空格,换行符,您的用户决定只需指定一组不同的ls
选项,您找到的ls
版本就不会像您预期的那样......
改为使用stat
:
stat -c '%Y'
将为您提供自epoch
以来的秒数。
尝试
date -d "@$(stat -c '%Y' $myfile)" "+%m/%d/%Y"
获取日期,并通读man date
以获得您想要的格式的时间,替换'%F'在上面的命令行中:
date -d "@$(stat -c '%Y' $myfile)" "+%H:%M"
编辑:使用您的格式。
EDIT2:我真的不认为你的日期格式是明智的,因为对于不是来自美国的人来说,它是如此模棱两可,而且它也不容易排序。但它是一种文化的东西,所以这更像是一个暗示:如果你想让你的国外人士可以使用,可以使用年月日作为格式,或者获取当前的语言环境设置格式日期。
答案 2 :(得分:0)
使用stat
命令。
mtime=$(stat --format=%y filename)
答案 3 :(得分:0)
我知道这是一个非常的老问题,但是,为了完整起见,我在这里添加了一个额外的答案。
原始问题未指定特定的操作系统。 stat
与受 SysV 启发的 Unix(例如 Linux)和受 BSD 启发的(例如 Free/Open/NetBSD、macOS/Darwin)有很大不同。
在 macOS Big Sur (11.5) 下,您可以使用单个 stat
命令获取文件的日期:
stat -t '%m/%d/%Y %H:%M' -f "%Sm" myfile.txt
会输出
04/10/2021 23:22
2021 年 4 月 10 日。
你可以很容易地把它放在两个命令中,一个用于日期,另一个用于时间,当然,以符合最初提出的问题。