Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 这个文件有多旧?_Unix - Fatal编程技术网

Unix 这个文件有多旧?

Unix 这个文件有多旧?,unix,Unix,我有一个shell脚本,可以检查一个文件有多少天了。我做了stat-f“%m%t%Sm%N”“$file”。但是我想将其存储到一个变量中,然后比较当前时间和文件创建时间?假设您使用的是bash,您可以通过以下方式捕获命令的输出: fdate=$(stat -f "%m%t%Sm %N" "$file") 然后对结果做任何你想做的事情: echo ${fdate} 这是假设命令本身首先起作用。如果是,您可以忽略下面的文本 GNUstat程序使用-f指定要查询文件系统而不是文件,并且您拥有的其

我有一个shell脚本,可以检查一个文件有多少天了。我做了
stat-f“%m%t%Sm%N”“$file”
。但是我想将其存储到一个变量中,然后比较当前时间和文件创建时间?

假设您使用的是
bash
,您可以通过以下方式捕获命令的输出:

fdate=$(stat -f "%m%t%Sm %N" "$file")
然后对结果做任何你想做的事情:

echo ${fdate}
这是假设命令本身首先起作用。如果是,您可以忽略下面的文本


GNU
stat
程序使用
-f
指定要查询文件系统而不是文件,并且您拥有的其他选项在您的问题上下文中似乎没有意义

使用Gnu
stat
,您可以获得自上次文件更新(1)以来的时间,如下所示:

从当前时间中减去文件的最后一次修改时间(两者都表示为自历元起的秒数),以秒为单位给出时间

如果你不太担心闰秒可能产生的误差(误差最多为1570万分之一,或0.000006%),你可以将其除以86400:

ageInDays=$((($(date -u +%s) - $(stat --printf "%Y" "file")) / 86400))


(1) 请注意,尽管
stat
声称有一个
%W
格式说明符生成文件,但这并不总是有效(它返回零)。如果您真的对文件是何时创建的而不是最后一次更新感兴趣,您可以先检查一下,但您可能必须准备接受信息不可用的可能性。我使用了上面的上次修改时间,因为它经常用于检测更改。

Thanxx for ur help@paxdiablo…我如何仅存储它的日期?当我运行ageUnseconds=$($(date-u+%s)-$(stat-printf“%Y”文件)))Thanxx以获取您的帮助@paxdiablo…我如何仅存储其中的日期?当我运行ageUnseconds=$($(date-u+%s)-$(stat--printf“%Y”文件)时,我得到了以下错误统计:非法选项---用法:stat[-FlLnqrsx][f format][t timemt][file…]。/getTimeCreated.sh:第16行:1452581883-:语法错误:需要操作数(错误标记为“”)@Mohit,那么你就不用GNU stat了。你可以使用你在问题中给出的命令(假设它提供了你所需要的),或者下载/编译/安装GNU one以获得额外的功能。我就是这样做的,它对我起了作用:#/bin/sh file=/Users/mrane/Desktop/Source/Purge\u work/hdfs\u Purge.log echo“$file”MPHR=60 current=
date+%s
echo“$current”\fdate=$(stat-f”%m%t%Sm%N“$file”)fdate=$(stat-f”%m“$file”)\ddate=$(stat c%y test.txt | cut-d'-f1)echo“$fdate”分钟=($current-$fdate)分钟“差值为$((当前-fdate))分钟”
ageInDays=$((($(date -u +%s) - $(stat --printf "%Y" "file")) / 86400))