Schrift
[thread]7751[/thread]

Konzept: Synchronisation einer Ordnerstruktur (Seite 2)

Leser: 1


<< |< 1 2 >| >> 20 Einträge, 2 Seiten
StefanJ
 2006-03-09 18:31
#63396 #63396
User since
2005-05-03
35 Artikel
BenutzerIn
[default_avatar]
leider ist es doch nicht ganz was ich wollte, jedesmal wenn ich die Ordnerstruktur einlesen lasse,ist der Zeitstempel der Dateien anders, obwohl die Datei an sich nicht verändert wurde. Welche anderen Parameter muss ich dann dafür verwenden??
Ich hab weder in der perldoc -f stat, noch sonst wo irgendein Hinweis darauf gefunden, mit was ich das -M austauschen muss
Code: (dl )
my $time = -M $file 
renee
 2006-03-09 18:48
#63397 #63397
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
my $time = (stat($file))[9];
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/
StefanJ
 2006-03-10 09:30
#63398 #63398
User since
2005-05-03
35 Artikel
BenutzerIn
[default_avatar]
Hi,tut mir leid,funktioniert irgendwie net. Wenn ich folgenden Code habe:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use strict;
use warnings;
use File::Find;
use File::stat;
use Time::localtime;

my $dir = 'c:/test/test';
my @files;


find(\&wanted,$dir);

sub wanted{
my $file = $File::Find::name;
my $flag = -f $file ? 'f' : 'd';
my $time = (stat($file))[9];
#my $time = ctime(stat($file)->mtime);

push(@files,$file.','.$time.','.$flag);
}

foreach my $file(@files)
{
print $file."\n";
}


zeigt er mir nur den Pfad und f bzw. d an. Aber der Timestempel erscheint nicht. mit my $time = ctime(stat($file)->mtime); dagegen erhalte ich den verschönerten aber unpraktikablen Timestempel. Irgendwie zweifel ich grad stark an meiner Intelligenz..
*ratlos*
renee
 2006-03-10 10:46
#63399 #63399
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
lass das use File::stat raus. stat ist eine eingebaute Funktion bei Perl (siehe perldoc -f stat)...
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/
ptk
 2006-03-10 14:40
#63400 #63400
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Mit
Code: (dl )
use File::stat
kann man aber
Code: (dl )
stat($datei)->mtime
schreiben und muss sich nicht die Reihenfolge im Array merken. File::stat ist außerdem ein Standardmodul, tut also nicht weh.
Dubu
 2006-03-11 16:10
#63401 #63401
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Man sollte nur daran denken, dass File::stat das (CORE::)stat überschreibt. Deshalb funktioniert der Code von StefanJ nicht mit (stat($file))[9].

StefanJ: Du kannst auch stat($file)->mtime benutzen, lass einfach das ctime() weg.
StefanJ
 2006-03-13 11:00
#63402 #63402
User since
2005-05-03
35 Artikel
BenutzerIn
[default_avatar]
Ah,okay,danke für die Aufklärung!

Jetzt hab ich nur noch ein Problem:
Für mein Skript dürfen in der Ordnerstruktur keine Dateinen mit Leerzeichen vorkommen, kennt ihr vielleicht ein command-line tool mit dem man im Voraus alle Leerzeichen aus Dateien in einer Ordnerstruktur entfernen kann? Bzw.hat jemand schon ein fertiges Perl-Skript dafür ??
(Hätte ich dafür ein neues Topic aufmachen sollen?? )
gruß,
SJ
renee
 2006-03-13 11:10
#63403 #63403
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
<!--perldoc_f1--><a href="http://faq.perl-community.de/bin/view/Perldoc/perl..." target="_blank"><img alt="perldoc " src="/iB_html/non-cgi/Skin/SKIN-3/images/perldoc.gif" border="0"> <!--perldoc_f2-->-f rename<!--perldoc_f3--></a><!--perldoc_f4-->

Edit: Vorher mit CPAN:File::Find die Verzeichnisse raussuchen, die ein Leerzeichen haben (Hinweis: siehe <!--perldoc_f1--><a href="http://faq.perl-community.de/bin/view/Perldoc/perl..." target="_blank"><img alt="perldoc " src="/iB_html/non-cgi/Skin/SKIN-3/images/perldoc.gif" border="0"> <!--perldoc_f2-->-f -X<!--perldoc_f3--></a><!--perldoc_f4-->)\n\n

<!--EDIT|renee|1142241176-->
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/
StefanJ
 2006-03-13 13:57
#63404 #63404
User since
2005-05-03
35 Artikel
BenutzerIn
[default_avatar]
hm,also, das Raussuchen der Dateien, die ein Leerzeichen haben, kann man doch weglassen in meinem Fall,da ich doch eh an der Stelle nach allen Dateien in dem Ordner suche
Code: (dl )
1
2
3
4
5
6
7
8
9
find(\&wanted,$dir);

sub wanted{
my $file = $File::Find::name;
my $flag = -f $file ? 'f' : 'd';
my $time = (stat($file))[9];

push(@files,$file.','.$time.','.$flag);
}


Kann ich nicht einfach in die sub wanted Funktion ein if-Kontrollstruktur mit einbauen, die an der Stelle dann das $File nach Leerzeichen untersucht und gegebenfalls diese entfernt(mit rename)??
Weil das eigentliche entfernen des leerzeichens muss doch dann eh das "rename" machen ? kann mir das nochma jemand bitte genauer erläutern?(das perldoc rename gibt nicht gerade viel her, ausser " rename OLDNAME,NEWNAME")
renee
 2006-03-13 14:34
#63405 #63405
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Die perldoc ist da vollkommen ausreichend... rename ist der Funktionsname OLDNAME ist der alte Name (also mit Leerzeichen), NEWNAME der neue Name (also ohne Leerzeichen)...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
find(\&wanted,$dir);

sub wanted{
my $file = $File::Find::name;
my (@fileinfos) = split(/[\/\\]/,$file); # besser File::Basename verwenden
my $filename = $fileinfos[-1]; # hole Dateinamen
if($filename =~ /\s/){ # wenn Leerzeichen vorkommen
$filename =~ s/\s//g; # lösche Leerzeichen
pop @fileinfos;
my $newname = join('/',@fileinfos).'/'.$filename;
rename $file, $newname;
$file = $newname;
}
my $flag = -f $file ? 'f' : 'd';
my $time = (stat($file))[9];

push(@files,$file.','.$time.','.$flag);
}
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/
<< |< 1 2 >| >> 20 Einträge, 2 Seiten



View all threads created 2006-03-02 10:17.