Hallo,
ich will ein kleines Skript schreiben (shell oder perl) mit dem ich in einem bestimmten Verzeichnis alle Dateien vom gestriegen Tag zippen kann.
Habe das ganze mal versucht mit find und -mtime zu lösen, doch leider finde ich so auch immer Dateien, die noch älter sind.
Hat jemand eine gute Idee?
Das Skript soll nichts großes werden und ist nur für verübergehend gedacht.
Danke!
Dateien von gestern bestimmen und zippen
Dateien von gestern bestimmen und zippen
Oh, yeah!
Code: Alles auswählen
find . -ctime 1
Gruß, Marcus
„Well done! We did it!“
Debian testing
kernel 2.6.18.3
IBM R50e UR0S5GE
„Well done! We did it!“
Debian testing
kernel 2.6.18.3
IBM R50e UR0S5GE
Man muss Ordner ausschließen. Denn wenn sich nur eine Datei darin geändert hat, ist der Ordner dabei.
Je nachdem, was du haben willst, auch ctime oder atime.
Code: Alles auswählen
find . -mtime 1 -type f
Gruß, Marcus
„Well done! We did it!“
Debian testing
kernel 2.6.18.3
IBM R50e UR0S5GE
„Well done! We did it!“
Debian testing
kernel 2.6.18.3
IBM R50e UR0S5GE
Danke, dass sieht schon besser aus.
Nun finde ich Dateien vom 8 Dec und auch welche vom 7 Dec. Die vom 7 Dec sind aber nicht jünger als 21:01. Die jüngeren Dateien vom z.B. 7 Dec werden nun nicht mehr angezeigt.
Finde ich denn nun so auch um 01:00 Uhr nachts, am 10.12.2006 auch Dateien von 23:59 (vom 09.12.2006)?
Weil genau solche Dateien möchte ich so erfassen.
Nun finde ich Dateien vom 8 Dec und auch welche vom 7 Dec. Die vom 7 Dec sind aber nicht jünger als 21:01. Die jüngeren Dateien vom z.B. 7 Dec werden nun nicht mehr angezeigt.
Finde ich denn nun so auch um 01:00 Uhr nachts, am 10.12.2006 auch Dateien von 23:59 (vom 09.12.2006)?
Weil genau solche Dateien möchte ich so erfassen.
Oh, yeah!
Hier hast du ein kleines Perlscript das genau das macht. Ich nutze zum Finden das Modul "File::Find" wenn du willst kannst du das natürlich auch anders lösen.
Code: Alles auswählen
#!/usr/bin/perl
use strict;
use warnings;
use File::Find;
sub usage($)
{
print <<TPG;
ANWENUNG:
$0 von bis /pfad/zum/suchen
Beispiel:
$0 0 1 /home
Sucht von Mitternacht heute
bis Mitternacht gestern\n
TPG
die($_[0]."\n");
}
usage('') if(grep{$_=~/^-h/}@ARGV);
my $tag_a=int(shift(@ARGV));
my $tag_b=int(shift(@ARGV));
usage('Falsche Tagangaben!') if($tag_a >= $tag_b && $tag_a <= 0);
usage('Kein Pfad angeben!') unless(@ARGV);
usage('Ein Pfad existiert nicht!') unless(@ARGV==grep{-d $_}@ARGV);
my @quelldirs=@ARGV;
my @dateiliste=();
my $now=time();
my @lnun=localtime();
my $von_mnacht=$lnun[0]+($lnun[1]+($lnun[2]+$tag_a*24)*60)*60; # Sekunden;
my $bis_mnacht=$von_mnacht+$tag_b*24*60*60; # Sekunden;
sub wanted
{
my $pfad=$File::Find::name;
unless(-d $pfad)
{
my $mtime=-M $pfad;
if($mtime)
{
$mtime*=24*60*60;
push(@dateiliste,$pfad)if($mtime>=$von_mnacht && $mtime<=$bis_mnacht);
}
}
}
find(\&wanted, @quelldirs);
print join("\n",grep{$_=localtime($now-(-M $_)*24*60*60).", $_"}sort{-M $b <=> -M $a}@dateiliste)."\n";