Schrift
[thread]6711[/thread]

kompletten Verzeichnis-Baum durchlaufen

Leser: 3


<< >> 3 Einträge, 1 Seite
Gast Gast
 2005-02-16 13:42
#51800 #51800
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 :)
Ronnie
 2005-02-16 13:46
#51801 #51801
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Evtl. hilft dir dieses Snippet weiter:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
#!/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-->
renee
 2005-02-16 13:47
#51802 #51802
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#! /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-->
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/
<< >> 3 Einträge, 1 Seite



View all threads created 2005-02-16 13:42.