AIX 7.2 希望在 AIX 上重新创建以下内容。
find /etc -maxdepth 1 -iname "*conf" -type f -mmin +5 -printf '%p;%T@\n' | awk -F ';' -v time="$( date +%s )" '{ print $1";"$2";" (time-$2 ) }'
/etc/rsyslog.conf;1640302499.0000000000;46381761
conf 文件只是一个示例,用于查找可能超过一定秒数的特定文件列表。可能低至 300 秒,也可能高至 43200 秒或更长。
答案1
如果我必须在 AIX 系统上解决这个问题,我会再次依靠 perl。由于您正在使用-maxdepth 1
,因此这里实际上没有必要进入 File::Find 模块。我想出了一个使用两个基本功能的 perl 脚本:
如果脚本发现与模式匹配的文件的最后修改时间早于预期时间,它会以您指定的分号分隔格式打印这些文件。请注意,文件名中允许使用分号(以及换行符和其他空格),因此处理输出时要小心。
#!/usr/bin/perl -w
# prints matching file mtime and age in seconds
use strict;
# expect 3 arguments:
# * a starting directory
# * a (quoted from the shell) wildcard for -iname
# * a cutoff age in seconds
if ($#ARGV != 2) {
die "Usage: $0 [ dir ] [ pattern ] [ age ]"
}
my ($start_dir, $pattern, $age) = @ARGV;
unless ($age =~ /^\d+$/ && $age > 0) {
die "$0: age must be a positive integer"
}
my $now = time();
my $cutoff = $now - $age;
foreach my $file (glob "${start_dir}/${pattern}") {
next unless -f $file;
my $mtime = (stat($file))[9];
if ($mtime < $cutoff) {
print "${file};${mtime};" . ($now - $mtime) . "\n";
}
}