Alt dizinler de dahil olmak üzere bir dizindeki en yeni dosyalar nasıl bulunur?


12

Windows'da belirli bir dizindeki ve alt dizinlerindeki tüm dosyaları listelemek için bir yol arıyorum, en yeni dosyalar üstte olacak şekilde sıralandı. Bunu yapmanın kolay bir yolu var mı? Ayrıca bir Perl betiği için razı olurdum.

Yanıtlar:


3

Hala bir betik çözümü ile ilgileniyorsanız, hızlı bir şekilde birlikte tüm dizinlerden dosyaları birlikte görüntüleyecek bir şey attım:

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

Dosyalar en yeniden en eskiye doğru görüntülenir ve yalnızca dosya adını gösterir. Bu şekilde, bu komut dosyasının çıktısını, fazla çıktıyı soyma konusunda endişelenmenize gerek kalmadan işleme için başka bir araca kolayca bağlayabilirsiniz.

Kullanımı: perl find.pl <starting_directory>


Teşekkürler. Sanırım bu, bu yönde gitti eğer bir stackoverflow soru olmalı. :)
Kip

1
yaptığım birkaç değişiklik ( my $dir = ($#ARGV >= 0 ? $ARGV[0] : '.');bununla karşılaşan herkesin yardımı için): böylece dizin parametresi verilmezse geçerli dizini tarar ve yazdırılan zamanı dahil eder:print strftime('%Y-%m-%d %H:%M:%S', localtime((stat($key))[9])) . " $key\n";
Kip

1
@Kip, ikinci bir çağrıyı önlemek $files{$key}için strftimeyazdırırken kullanmak istiyorsanız , mtime içinde saklanmalıdır stat(). Başka bir programa aktarmayı planlıyorsanız, dosya adlarının tam yolunu görüntülemek için de değiştirdim. Burada kapabilirsiniz: pastebin.ca/1797748
John T

teşekkürler, benden daha hızlısın. stat komutu yalnızca geçerli dizindeki dosyalar için de çalıştı, çünkü dosya adının yalnızca son bölümünü saklıyordunuz.
Kip

7

Bunun gibi: dir /s /o:-d


1
hmm ... oldukça ideal değil, bu hala her dizini ayrı ayrı listeler, ancak onunla çalışabilirim
Kip

5

Eğer yüklü cygwin veya benzeri varsa find . -type f | xargs ls -trhile yapacak. Neredeyse kesinlikle Microsoft'un powershell ile benzer yapabilirsiniz.


3

Herşeyi kullanıyorsanız , sadece yolu yazın ve Değiştirilme Tarihine göre sıralayın ; bu dizindeki tüm dosyaları alt dizine bakılmaksızın bu sırayla alırsınız.

Her şey ücretsiz, taşınabilir bir sürümü mevcuttur.


1

Kodlama sakıncası yoksa (bu soruyu Stack Overflow bölgesine alır), ancak C # 'da Directoryve Filesınıfları vardır.

GetFilesYöntem tüm alt dizinleri tüm dosya adlarını döndürür bir aşırı vardır. Daha sonra GetLastWriteTimedeğiştirilen tarih / saati almak için çağrı yaparak bu liste üzerinde döngü yapabilirsiniz . Adı ve saati sözlükte saklayın, saati sıralayın ve dosya adlarını yazdırın.

Ayrıca DirectoryInfove FileInfosınıfları da var.

Tüm bu işlevlerin Powershell aracılığıyla kullanılabildiğini eklemeliydim , bu nedenle tam bir IDE'ye erişiminiz yok.


Teşekkürler. Ben esas olarak Java bir geliştirici değilim. burada bir kabuk seçeneği mevcut umut
Kip

@Kip - - Ben PowerShell sözü gerektiğini çıkış yapmış sonra dün gece gerçekleşen technet.microsoft.com/en-us/scriptcenter/dd742419.aspx - bir kodlama dili var ama .NET çalışma zamanı erişebilir.
ChrisF

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.