默认情况下,下面的代码搜索当前工作目录下的子树。您还可以在命令行上再命名一个要搜索的子树。
#! /usr/bin/env perl
use strict;
use warnings;
use File::Find;
my($newest_mtime,$path);
sub remember_newest {
return if -l || !-f _;
my $mtime = (stat _)[9];
($newest_mtime,$path) = ($mtime,$File::Find::name)
if !defined $newest_mtime || $mtime > $newest_mtime;
}
@ARGV = (".") unless @ARGV;
for (@ARGV) {
if (-d) {
find \&remember_newest, @ARGV;
}
else {
warn "$0: $_ is not a directory.\n";
}
}
if (defined $path) {
print scalar(localtime $newest_mtime), "\t", $path, "\n";
}
else {
warn "$0: no files processed.\n";
exit 1;
}
如所写,代码不遵循符号链接。如果您在命令行上命名符号链接,您将看到以下输出
$ ./find-newest ~/link-to-directory
./find-newest:未处理任何文件。
使用bash,您必须添加一个斜杠来强制取消引用。
$ ./find-newest ~/link-to-directory/
1970 年 1 月 1 日星期四 00:00:00