Hi,
ich habe eine bestimmte Ordnerstruktur mit einige Files drinnen, das als template verwendet wird.
Zur Zeit packe ich das ganze aus dem Zip File ausm benenne alle Dateien manuel um.
In Zukunft möchte ich das mit einem Perl Skript machen.
Es soll in einem bestimmten Verzeichniss (und allen seinen Unterverzeichnissen!) alle Dateien umbennenen, wenn darin ein bestimmtes Muster gefunden wird.
Ich dachte irgendwie an einen rekursiven Aufruf.
mit opendir und readdir bekomme ich ja über das Verzeichnis Handle eine Liste mit allen Dateinamen - aber nicht den Unterverzeichnissen ? Oder?
Wenn jemand eine ganz andere Idee hat, ich bin offen für alles :)
User since
2003-08-14
2022
Artikel
BenutzerIn
Evtl. hilft dir dieses Snippet weiter:
#!/usr/bin/perl
use strict;
use warnings;
use File::Find;
find(\&handle_file, '/usr/share/doc/');
exit;
sub handle_file {
print $_, "\n" if /.*\.html/;
}
Anstatt
print müsstest du
rename verwenden. Schau aber nochmal in die Doku von File::Find - es gibt da ein paar Variablen z.B. für aktuelle Datei mit absolutem Pfad usw.\n\n
<!--EDIT|Ronnie|1108554403-->
User since
2003-08-04
14371
Artikel
ModeratorIn
#! /usr/bin/perl
use strict;
use warnings;
use File::Find;
my $dir = './testdir';
my @dirs;
find(\&get_dir,$dir);
sub get_dir{
rename($_, $new_filename) if(-f $File::Find::name && $_ =~ /DEIN_MUSTER/);
}
\n\n
<!--EDIT|renee|1108554587-->