问题描述
在我的bash脚本中,我正在执行以下操作:
shopt -s nullglob
for file in $LOCATION/EXF_TESTFORSTACKOVERFLOW_*.xml;
do
touch "$file.FTC"
done
但是在创建.FTC文件之前,我要进行检查:
如果xml文件的创建日期距sysdate超过30分钟,请创建FTC
如果它不超过30分钟-请勿为此文件创建.FTC。
关于在执行“ $ file.FTC” 之前如何实施此检查的任何建议 我不确定如何检查文件的日期。 当使用命令 ls -l 时,我看到要进行此检查的日期。
谢谢大家!
解决方法
您可能没有“创建(或出生)”时间-它取决于您拥有的文件系统(请检查/ etc / fstab)-您可能应该使用“ mtime”代替,最后修改的时间,或者“ ctime”,最后一个inode更改(文件重命名,移动等)
这是stat
命令的示例,用于获取文件的时间数据:
stat -c $'%n\nbirth\t%W = %w\naccess\t%X = %x\nmod\t%Y = %y\nchange\t%Z = %z\n' *
输出可能类似于(这是XFS文件系统):
file.txt
birth 0 = -
access 1595249263 = 2020-07-20 08:47:43.194000000 -0400
mod 1595249255 = 2020-07-20 08:47:35.453000000 -0400
change 1595249255 = 2020-07-20 08:47:35.453000000 -0400
test.dat
birth 0 = -
access 1595364240 = 2020-07-21 16:44:00.675000000 -0400
mod 1595364184 = 2020-07-21 16:43:04.786000000 -0400
change 1595364184 = 2020-07-21 16:43:04.786000000 -0400
menu.sh
birth 0 = -
access 1600025501 = 2020-09-13 15:31:41.977000000 -0400
mod 1600025496 = 2020-09-13 15:31:36.664000000 -0400
change 1600025496 = 2020-09-13 15:31:36.664000000 -0400
在装有APFS的Mac上,出生时间是一个已知值。