Answers:
仅用于修改时间
if test `find "text.txt" -mmin +120`
then
echo old enough
fi
您可以使用-cmin
更改或-amin
访问时间。正如其他人指出的那样,我认为您无法跟踪创建时间。
find
在找不到匹配项时返回非零值。
text.txt
假定不是目录。
[ "$(find path/to/file -mmin +120)" ] && echo "it is old"
我一直喜欢用它date -r /the/file +%s
来寻找年龄。
您也可以touch --date '2015-10-10 9:55' /tmp/file
在任意日期/时间获得非常细粒度的时间。
let AGE=$(($(date +%s)-$(date -r /path/to/file +%s)))
假设已创建且从未修改,或“相对于mod的年龄”)
function file-age { FILE_CREATED_TIME=`date -r "$1" +%s`; TIME_NOW=`date +%s`; echo "$[ ${TIME_NOW} - ${FILE_CREATED_TIME} ]"; }
$[ ]
,如果不建议弃用,则至少应较旧且不易携带,应$(( ))
改为使用;反引号比易碎$( )
; 并且函数名称中的连字符可能无法完全移植。不过,它的本质是好的!
使用stat
来找出文件的最后修改日期,date
找出当前时间以及对bashisms的广泛使用,就可以根据文件的最后修改时间1进行所需的测试。
if [ "$(( $(date +"%s") - $(stat -c "%Y" $somefile) ))" -gt "7200" ]; then
echo "$somefile is older then 2 hours"
fi
尽管该代码比该find
方法可读性差,但我认为它是一种更好的方法,它比运行find
已“找到”的文件要好。另外,日期操作很有趣;-)
%Z
而不是%Y
下面的时间来获取您可能想要的“更改时间”。[更新]
对于Mac用户,请使用stat -f "%m" $somefile
而不是上面的Linux特定语法
stat
不是内置的-对我非常不好,我会修复。
尽管从技术上讲 ctime并不是创建时间,但通常是。
由于ctime不受文件内容更改的影响,因此通常仅在创建文件时进行更新。是的-我听到大家都在尖叫-如果您更改访问权限或所有权,它也会被更新...但是通常这只是一次完成,通常是在将文件放到那里的同时进行。
就我个人而言,我总是使用mtime进行所有操作,我想这就是您想要的。但是无论如何……这是古斯的“吸引人” bash的重新演练,它具有易于使用的功能。
#!/ bin / bash 函数age(){ 本地文件名= $ 1 本地更改=`stat -c%Y“ $ filename”` 本地现在=“日期+%s” 本地经过 让过去=现在改变 回显$ elapsed } file =“ /” echo $ file的年龄为$(age“ $ file”)秒。
local changed=$(perl -MFile::stat -e "print stat(\"${filename}\")->mtime")
superuser.com/questions/427551/...
chmod
在文件上应用了simple ,将使该想法无效。但我可以和你一起做到这一点;-)
+%s
下半场的比赛
age() { echo $(( $(date +%s) - $(date -r "$1" +%s) )); }
感谢@Grizly的改正!)
noatime
option的文件系统上的创建时间(这对性能有好处,因此您应该使用它)。因此,只需使用%X
代替即可%Y
。
找到一个很好,但我认为您可以使用另一种方法,尤其是如果您现在需要该文件旧多少秒
date -d "now - $( stat -c "%Y" $filename ) seconds" +%s
使用GNU日期
考虑一下工具“ stat”的结果:
File: `infolog.txt'
Size: 694 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 11635578 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ fdr) Gid: ( 1000/ fdr)
Access: 2009-01-01 22:04:15.000000000 -0800
Modify: 2009-01-01 22:05:05.000000000 -0800
Change: 2009-01-01 22:05:05.000000000 -0800
您可以在此处看到访问/修改/更改的三个日期。没有创建日期。您只能真正确定何时修改了文件内容(“修改”字段)或其索引节点(“更改”字段)。
两个字段何时更新的示例:
如果有人将额外的信息连接到文件末尾,则“修改”将被更新。
如果有人通过chmod更改了权限,则“更改”将被更新。