将文件的创建日期保存到变量中-BASH脚本-UNIX

问题描述

在我的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上,出生时间是一个已知值。