Я ищу способ в Windows перечислить все файлы в данном каталоге и его подкаталогах, отсортированные так, чтобы самые новые файлы были сверху. Есть ли простой способ сделать это? Я также согласился бы на сценарий Perl.
5 ответов
Как это: dir /s /o:-d
Если у вас установлен Cygwin или аналогичный, find . -type f | xargs ls -tr
сделает свое дело. Вы почти наверняка можете сделать то же самое с PowerShell от Microsoft.
В случае, если вы используете Все, просто введите путь и сортируйте по дате изменения, и вы получите все файлы в этой папке в указанном порядке, независимо от подкаталога.
Все бесплатно, портативная версия доступна.
Если вы все еще заинтересованы в решении на основе сценариев, я быстро скомбинировал что-то, что будет отображать файлы из всех каталогов вместе:
#!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>
Если вы не возражаете против кодирования (хотя это ставит вопрос на территорию переполнения стека), то в C # есть классы Directory
и File
.
Метод GetFiles
имеет перегрузку, которая возвращает все имена файлов во всех подкаталогах. Затем вы можете перебрать этот список, вызывая GetLastWriteTime
чтобы получить измененную дату / время. Сохраните имя и время в словаре, отсортируйте время и распечатайте имена файлов.
Есть также классы DirectoryInfo
и FileInfo
.
Я должен был добавить, что все эти функции доступны через Powershell, поэтому у вас нет доступа к полной IDE.