11

Я ищу способ в Windows перечислить все файлы в данном каталоге и его подкаталогах, отсортированные так, чтобы самые новые файлы были сверху. Есть ли простой способ сделать это? Я также согласился бы на сценарий Perl.

5 ответов5

7

Как это: dir /s /o:-d

5

Если у вас установлен Cygwin или аналогичный, find . -type f | xargs ls -tr сделает свое дело. Вы почти наверняка можете сделать то же самое с PowerShell от Microsoft.

3

В случае, если вы используете Все, просто введите путь и сортируйте по дате изменения, и вы получите все файлы в этой папке в указанном порядке, независимо от подкаталога.

Все бесплатно, портативная версия доступна.

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";
}

Файлы отображаются от самых новых до самых старых, показывая только имя файла. Таким образом, вы можете легко передать вывод этого скрипта другому инструменту для обработки, не беспокоясь о лишнем выводе.

Использование: perl find.pl <starting_directory>

1

Если вы не возражаете против кодирования (хотя это ставит вопрос на территорию переполнения стека), то в C # есть классы Directory и File .

Метод GetFiles имеет перегрузку, которая возвращает все имена файлов во всех подкаталогах. Затем вы можете перебрать этот список, вызывая GetLastWriteTime чтобы получить измененную дату / время. Сохраните имя и время в словаре, отсортируйте время и распечатайте имена файлов.

Есть также классы DirectoryInfo и FileInfo .

Я должен был добавить, что все эти функции доступны через Powershell, поэтому у вас нет доступа к полной IDE.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .