如何在目录(包括子目录)中查找最新文件?

Kip*_*Kip 12 windows script command-line

我正在寻找一种在 Windows 中列出给定目录及其子目录中的所有文件的方法,并对其进行排序,以便最新的文件位于顶部。有什么简单的方法可以做到这一点吗?我也满足于使用 Perl 脚本。

SLa*_*aks 7

像这样: dir /s /o:-d


Dav*_*ett 5

如果你安装了 cygwin 或类似的东西,那么find . -type f | xargs ls -tr就可以了。几乎可以肯定,您可以使用 Microsoft 的 powershell 执行类似操作。


小智 3

如果您仍然对脚本化解决方案感兴趣,我很快就把一些东西放在一起,它将一起显示所有目录中的文件:

#!C:/Perl/bin/perl.exe
use File::Find;

my %files = ();

sub process
{
    $files{$_} = (stat($_))[9] unless -d $_;
}

find (\&process, $ARGV[0]);

foreach my $key(sort {$files{$b} <=> $files{$a}} keys %files)
{
    print "$key\n";
}
Run Code Online (Sandbox Code Playgroud)

文件按最新到最旧的顺序显示,仅显示文件名。通过这种方式,您可以轻松地将此脚本的输出传输到另一个工具进行处理,而不必担心剥离多余的输出。

用法:perl find.pl <starting_directory>