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

Save Creation Date of File into Variable - BASH Script - UNIX

在我的 bash 脚本中,我正在执行以下操作:

shopt -s nullglob 

for file in $LOCATION/EXF_TESTFORWhosebug_*.xml;
 do
touch "$file.FTC"
 done

但在创建 .FTC 文件之前,我想做一个检查:

IF 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

在我的 Mac APFS 上,出生时间是已知值。