Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10301[/thread]

File::Find Such-Tiefe festlegen?

Leser: 6


<< >> 4 Einträge, 1 Seite
Lightman
 2007-09-02 16:41
#98989 #98989
User since
2007-01-31
57 Artikel
BenutzerIn
[default_avatar]
Hallo,

in einem Ordner sind Unterordner enthalten, in denen Text-Dateien gespeichert sind. Ich möchte per File::Find die Text-Dateien einlesen und nach Datum sortieren.

Mein Code bis jetzt:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
    my @ARGV = ("./data");
my @files = ();

# Gefundene Dateien hinzufügen...
find sub { push(@files, $_) }, @ARGV;

# Dateien nach Datum sortieren...
foreach my $file (sort sub { (stat($a))[9] <=> (stat($b))[9] }, @files) {
print "$file\n";
}


Wie lege ich fest, dass die Such-Tiefe nur 1 beträgt, d.h. dass Ordner in den Unterordnern bei der Suche ignoriert werden?
renee
 2007-09-02 16:54
#98990 #98990
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Bei File::Find kannst Du das nicht einstellen. Wenn es immer nur ein Verzeichnis ist (und *nie* mehrere Verzeichnisebenen), kannst Du einfach mit opendir etc. arbeiten:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl

use strict;
use warnings;

my $dir = '/path/to/dir';
opendir my $dirh, $dir or die $!;
my @files = map{ [$_, stat( $dir . '/' . $_ )[9]] }grep{ -f $dir . '/' . $_ }readdir $dirh;
closedir $dirh;

print $_->[0] for sort{ $b->[1] <=> $b->[0] }@files;


oder CPAN:File::Find::Rule
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Lightman
 2007-09-02 17:20
#98997 #98997
User since
2007-01-31
57 Artikel
BenutzerIn
[default_avatar]
Danke erst einmal. Ich bleibe aber bei File::Find und nutze einfach einen regulären Ausdruck, um Unterunterordner auszuschließen.
sid burn
 2007-09-02 18:25
#98998 #98998
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Hi,
du kannst auch File::Find::Rule verwenden. Das ist mächtiger als File::Find und dort kannst du auch eine maximale Suchtiefe festlegen. Und noch andere schöne dinge.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
<< >> 4 Einträge, 1 Seite



View all threads created 2007-09-02 16:41.