Schrift
[thread]7925[/thread]

File::Find geht nicht?: File::Find geht nicht?

Leser: 3


<< >> 5 Einträge, 1 Seite
Gast Gast
 2006-04-26 10:58
#65331 #65331
Hi,

ich versuche gerade ein Script zu schreiben das anfängt im Verzeichnis /home/50000/ nach einem Ordner 10047 zu suchen und wenn es gefunden wurde mir den vollständigen Pfad dahin auszugeben. Aber irgendwie funzt das net


Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use File::Find;
my $myRoot;
$myRoot = "/home/50000";

find(\&myFileFilter, $myRoot); # ab Verzeichnis $myRoot suchen

sub myFileFilter
{
my $File;

 #$_ enthält kompletten Pfad (Verzeichnis und Dateinamen)
 #$File::Find::dir enthält aktuelles Verzeichnis
 $File::Find::dir = "10047";
 #$File::Find::name = "test.html";

}
print find(\&myFileFilter, $myRoot);


Kann mir einer sagen was ich da machen muss.
Danke im Voraus
renee
 2006-04-26 11:36
#65332 #65332
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Probier mal:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
use File::Find;
my $myRoot;
$myRoot = "/home/50000";

find(\&myFileFilter, $myRoot); # ab Verzeichnis $myRoot suchen

sub myFileFilter
{
my $name = $File::Find::name;
if($name =~ /10047$/ and -d $name){
print $name;
}
}
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/
bjt
 2006-04-27 12:33
#65333 #65333
User since
2006-04-27
2 Artikel
BenutzerIn
[default_avatar]
Hi,

das funzt ja ganz gut soweit ich wollte das jetzt aber weiter bauen und zwar
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
26
27
my $myRoot;
$myRoot = "/home/56501";


find(\&myFileFilter, $myRoot);
sub myFileFilter
{
  my $name = $File::Find::name;
  if($name =~ /caches$/ and -d $name)
  {
#print $name ."\n";
chmod(0777,$name);
print $name."\n";


my $filename;
                         chdir $name;

foreach $filename (<*.html>)
{

             print $filename."\n";

              chown("56666","65533",$filename);
}
}
}

also ich habe jetzt in dem 50000 Verzeichnis ein paar unterverzeichnisse eingebaut und darin dann chaches verzeichnisse.
also der chmod befehl für den ordner caches geht. er findet alle caches ordner und gibt denen 777 rechte.

das was jetzt dazu sollte war das er in jedem ordner nach html dateien sucht und auf denen den chown befehl ausführt. da ist aber das problem.... denn den chown befehl führt er nur in dem ersten caches ordner aus den er findet und nicht in allen die er findet.

was mach ich da noch falsch?
renee
 2006-04-27 13:15
#65334 #65334
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Mach mal:
Code: (dl )
1
2
3
4
5
6
        
foreach my $filename (<$name/*.html>)
{
print $filename."\n";
chown("56666","65533",$filename);
}


statt:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
        
my $filename;
chdir $name;

foreach $filename (<*.html>)
{

print $filename."\n";

chown("56666","65533",$filename);
}
\n\n

<!--EDIT|renee|1146129395-->
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/
bjt
 2006-04-27 14:03
#65335 #65335
User since
2006-04-27
2 Artikel
BenutzerIn
[default_avatar]
Vielen Dank funzt bestens so.....
<< >> 5 Einträge, 1 Seite



View all threads created 2006-04-26 10:58.