如何使用 bash 脚本检查 AIX 中文件的最后修改日期?

Posted

技术标签:

【中文标题】如何使用 bash 脚本检查 AIX 中文件的最后修改日期?【英文标题】:How to check last modified date of a file in AIX using bash script? 【发布时间】:2019-11-06 18:15:17 【问题描述】:

我想在 AIX 中使用 bash 脚本检查文件的最后修改日期。

我试过了,

date -r file.txt "+%m-%d-%Y"
stat -c %y file.txt

但不能在 AIX 中工作。

【问题讨论】:

not working - 这是什么意思?你有任何错误吗?消息?输出无效?格式错误? “日期:不是公认的标志:r”这是我得到的。 stat -c %y file.txt 会发生什么? stat 在 AIX 中不是可用的命令 【参考方案1】:

如果您找不到合适的特定实用程序,您可以随时使用 perl:

perl -MPOSIX=strftime -e 'printf "%s\n", strftime("%c", localtime((stat(shift @ARGV))[8]))' filename

或更清晰:

perl -e '
    use POSIX qw(strftime);
    my $filename  = shift @ARGV;
    my @filedata  = stat $filename;
    my $mtime     = $filedata[8];
    my @timedata  = localtime $mtime;
    my $timestamp = strftime "%c", @timedata;
    print "$timestamp\n";
' filename

根据自己的喜好选择 strftime 格式。如果只需要纪元时间,打印$mtime

【讨论】:

嘿。 +1 用于添加易读版本;)【参考方案2】:

怎么样:

istat file
Inode 263 on device 10/8        File
Protection: rw-r--r--
Owner: 0(root)          Group: 0(system)
Link count:   1         Length 14682 bytes

Last updated:   Tue Sep 15 10:50:15 PDT 2018
Last modified:  Tue Sep 15 10:50:15 PDT 2018
Last accessed:  Tue Nov  3 12:01:12 PST 2018

如果你还没有弄清楚:

date -d "$( istat file | awk '/modified/gsub( /^[^:]+: +/,"",$0); print' )"   "+%m-%d-%Y"

P.S.:"+%m-%d-%Y" 是一种愚蠢的日期格式,因为它不能自然排序。 "+%Y-%m-%d" 会更有意义。

【讨论】:

我只想将文件的修改日期存储在一个变量中(只是日期为 ddmmyyy 格式)。 我希望 AIX 上的 awkdate 与我的行为相同;) @Rajs

以上是关于如何使用 bash 脚本检查 AIX 中文件的最后修改日期?的主要内容,如果未能解决你的问题,请参考以下文章

在 AIX/bash 上的 bash 循环中读取文件比在 Linux/ksh 中慢得多 - BLOCKSIZE?

如何在 AIX 中监视没有 cron 作业的文件更改

如何在 bash 脚本中检查文件名的扩展名?

在 bash 脚本中,如何引用单独的文件以在 for 循环中使用它? [复制]

如何查找多个文件、检查重复文件并用 bash、sed 脚本替换

如何使用 Bash 检查文件是不是包含特定字符串