Nur aktuelle Dateien aus Verzeichnis bearbeiten
Klaus
- perl
Hi,
es sollen Dateien aus einem Verzeichnis bearbeitet werden, aber nur die Dateien mit dem aktuellen Datum. Wie man Verzeichnisse einliest weiß ich. Mir ist nur nicht klar, wie ich nur die aktuellen Dateien auswählen kann.
Weiß da jemand Rat?
Klaus
es sollen Dateien aus einem Verzeichnis bearbeitet werden, aber nur die Dateien mit dem aktuellen Datum. Wie man Verzeichnisse einliest weiß ich. Mir ist nur nicht klar, wie ich nur die aktuellen Dateien auswählen kann.
Weiß da jemand Rat?
ja, selfhtml entweder http://de.selfhtml.org/perl/funktionen/dateiverwaltung.htm#dateitest oder http://de.selfhtml.org/perl/funktionen/dateiverwaltung.htm#stat
Struppi.
http://de.selfhtml.org/perl/funktionen/dateiverwaltung.htm#dateitest oder http://de.selfhtml.org/perl/funktionen/dateiverwaltung.htm#stat
Hi Struppi,
soweit war ich schon. Ich hab es mit -M versucht. Das ging nicht. So sieht mein Code aus:
#!/usr/local/bin/perl
$dir = '/daten/beitraege';
opendir(DIR, $dir);
my @Eintraege = readdir(DIR);
chdir("/pr/ibr/daten/beitraege/");
my @Grosse_Dateien = grep(-M lt "0.8", @Eintraege);
while (defined($filename = readdir(DIR)))
{
@Daten_alt = ("");
$Daten_neu = "";
foreach("/pr/ibr/daten/beitraege/$filename" eq "@Grosse_Dateien")
{
.
.
}
}
close(PASSWD);
Hallo Klaus
http://de.selfhtml.org/perl/funktionen/dateiverwaltung.htm#dateitest oder http://de.selfhtml.org/perl/funktionen/dateiverwaltung.htm#stat
Hi Struppi,
soweit war ich schon. Ich hab es mit -M versucht. Das ging nicht. So sieht mein Code aus:
#!/usr/local/bin/perl
$dir = '/daten/beitraege';opendir(DIR, $dir);
my @Eintraege = readdir(DIR);chdir("/pr/ibr/daten/beitraege/");
my @Grosse_Dateien = grep(-M lt "0.8", @Eintraege);
while (defined($filename = readdir(DIR)))
{
@Daten_alt = ("");
$Daten_neu = "";
foreach("/pr/ibr/daten/beitraege/$filename" eq "@Grosse_Dateien")
{
.
.
}
}
close(PASSWD);
Dieser Code läuft bei mir gar nicht, schau dir mal an was opendir, readir machen. Ich kann auch nicht so richtig nachvollziehen was du da vor hast, das foreach(...) Konstrukt ist mir neu, was passiert da?
Struppi.
--
[Javascript ist toll](http://javascript.jstruebig.de/)
Hallo Struppi,
das foreach ist falsch. Ich versteh wie ich eine einzelne Datei auf ihr Datum prüfe, aber nicht wie jede Datei in einem Verzeichnis. Mein Code ohne die Datumsprüfung sieht so aus:
$dir = '/daten/beitraege';
opendir(DIR, $dir);
while (defined($filename = readdir(DIR)))
{
@Daten_alt = ("");
$Daten_neu = "";
open(PASSWD,"/daten/beitraege/$filename")|| die "Benutzerdatei nicht gefunden $!\n";
while(<PASSWD>)
{
push(@Daten_alt,$_);
}
close(PASSWD);
for(@Daten_alt)
{
Wie ich nur Dateien bearbeite die das aktuelle Datum haben, verstehe ich einfach nicht so ganz.
so erhälst du alle Dateien ab einem gewissen Änderungsalter:
#!/usr/bin/perl -w
use strict;
my $dir = "./";
my $want = 30; # geändert seit x Tagen
chdir $dir;
foreach(<*.*>)
{
my $last_change = int( -M );
next if $last_change > $want;
print "Datei: $_ zuletzt geändert vor $last_change Tagen\n";
}
Struppi.
Vielen Dank für Deine Hilfe Struppi.
Den Rest werd ich hoffentlich alleine schaffen.