Ответы:
Если вы все еще заинтересованы в решении на основе сценариев, я быстро скомбинировал что-то, что будет отображать файлы из всех каталогов вместе:
#!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";
}
Файлы отображаются от самых новых до самых старых, показывая только имя файла. Таким образом, вы можете легко передать вывод этого скрипта другому инструменту для обработки, не беспокоясь о лишнем выводе.
Использование: perl find.pl <starting_directory>
my $dir = ($#ARGV >= 0 ? $ARGV[0] : '.');
чтобы он сканировал текущий каталог, если не задан параметр каталога, и включал время, которое выводится:print strftime('%Y-%m-%d %H:%M:%S', localtime((stat($key))[9])) . " $key\n";
$files{$key}
если вы хотите использовать это strftime
при печати, чтобы избежать повторного вызова stat()
. Если вы планируете передать его в другую программу, я также изменил его, чтобы отобразить полный путь к именам файлов. Вы можете получить это здесь: pastebin.ca/1797748
Если у вас установлен Cygwin или аналогичный, то find . -type f | xargs ls -tr
сработает. Вы почти наверняка можете сделать то же самое с PowerShell от Microsoft.
Если вы используете Все , просто введите путь и отсортируйте по дате изменения, и вы получите все файлы в этой папке в указанном порядке, независимо от подкаталога.
Все бесплатно, портативная версия доступна.
Если вы не возражаете против кодирования (хотя это ставит вопрос на территорию переполнения стека), то в C # есть классы Directory
and File
.
У GetFiles
метода есть перегрузка, которая возвращает все имена файлов во всех подкаталогах. Затем вы можете GetLastWriteTime
перебрать этот список, позвонив, чтобы получить измененную дату / время. Сохраните имя и время в словаре, отсортируйте время и распечатайте имена файлов.
Там также DirectoryInfo
и FileInfo
классы.
Я должен был добавить, что все эти функции доступны через Powershell , поэтому у вас нет доступа к полной IDE.
Если у вас установлено что-то вроде Git Bash или Cygwin, вы сможете использовать один из ответов здесь: /programming/4561895/how-to-recursively-find-the-latest-modified -file-в-каталог
Тот, который работал хорошо для меня: find . -type f -printf '%TF %TT %p\n' | sort -r
Вы также можете добавить | head -10
к концу этого, чтобы увидеть только 10 самых последних, скажем.