Schrift
[thread]8316[/thread]

Suchen: Suchen und löschen

Leser: 1


<< |< 1 2 3 >| >> 30 Einträge, 3 Seiten
Paul
 2006-09-11 16:00
#69685 #69685
User since
2006-09-11
12 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen

Kann mir jemand helfen bei einer für euch sicher simplen Frage.
In einem Verzeichnis liegen hunderte von Files, d.h. es gibt Log, Index und PDFs(filename.log, filename.inx und filename.PDF). Meine Frage ist nun; wie finde ich bestimmte Meldungen in den Logfiles zB. "keinPDF" oder "keinTIFF" oder ....". Diese betreffenden Filenamen muss ich mir merken und anschliessend alle zugehörenden Files löschen.

Bis jetzt habe ich es erst soweit gebracht:
Die Logfiles kann ich alle auslisten, aber das ist auch schon alles.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/local/bin/perl -w
#

use warnings;

$inpdir="/opt/compuset1/rmiserver/BaslerAPI/CompusetService/error/";

opendir(LOG, "$inpdir") or die "Verz. kann nicht geoeffnet werden: $!\n";

while ($name = readdir(LOG)) {
push(@logfiles, $name);
}

@logfiles = grep(/.*\.log$/, @logfiles);

closedir(LOG);

for ($i=0;$i<=$#logfiles;$i++) {
$logfiles[$i] =~ /(.*)\.log/;
print "$1.log\n";
}


Gruss Paul
renee
 2006-09-11 16:18
#69686 #69686
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Bitte schau Dir Wiki:use strict an...

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
28
29
30
31
32
33
34
35
36
37
38
#!/usr/local/bin/perl -w
#

use strict;
use warnings;
use Tie::File;
use File::Basename;

my $inpdir="/opt/compuset1/rmiserver/BaslerAPI/CompusetService/error/";

opendir(LOG, $inpdir) or die "Verz. kann nicht geoeffnet werden: $!\n";
my @logfiles = grep{/\.log$/}readdir(LOG);
closedir(LOG);

for my $file(@logfiles){
if(!check_log_file($inpdir,$file)){
delete_files($inpdir,$file);
}
}

sub check_log_file{
my ($dir,$name) = @_;
tie @lines,'Tie::File',$dir.'/'.$name or die $!;
for my $line(@lines){
if($line =~ /kein (?:PDF|TIFF)/){
print "Fehler gefunden\n";
return;
}
}
untie @lines;
return 1;
}

sub delete_files{
my ($dir,$name) = @_;
my ($basename) = basename($name);
unlink $basename.'.'.$_ for(qw(log inx pdf));
}
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/
fraggs
 2006-09-11 16:18
#69687 #69687
User since
2006-09-11
179 Artikel
BenutzerIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
#benutze deine methode von file listin here um sie zu loeschen
@files = ("listoffilesgoeshere"); #heist die listen @logfiles ?
foreach $file (@files) {
   unlink($file); #loescht die files
}


mmm das ist der code zum loeschen

edit:renee du bist zuschnell haha\n\n

<!--EDIT|fraggs|1157977193-->
mmm twix
Paul
 2006-09-11 16:37
#69688 #69688
User since
2006-09-11
12 Artikel
BenutzerIn
[default_avatar]
Hey, das ging ja schnell

@renee habe deinen code gleich ausprobiert.
Leider kommt eine für mich nicht verständliche Fehlermeldung.
Dies ist mein erstes Prog, habe heute angefangen mit "Einführung in Perl"

Code: (dl )
Unrecognized switch: -;  (-h will show valid options).


Gruss und Dank
Paul
renee
 2006-09-11 17:01
#69689 #69689
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wie hast Du es aufgerufen, gibt es sonst noch Infos bei der Fehlermeldung (z.B. Zeilennummer)?
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/
fraggs
 2006-09-11 17:02
#69690 #69690
User since
2006-09-11
179 Artikel
BenutzerIn
[Homepage] [default_avatar]
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
28
29
30
31
32
33
34
35
36
37
38
#!perl
#

use strict;
use warnings;
use Tie::File;
use File::Basename;

my $inpdir="/opt/compuset1/rmiserver/BaslerAPI/CompusetService/error/";

opendir(LOG, $inpdir) or die "Verz. kann nicht geoeffnet werden: $!\n";
my @logfiles = grep{/\.log$/}readdir(LOG);
closedir(LOG);

for my $file(@logfiles){
  if(!check_log_file($inpdir,$file)){
      delete_files($inpdir,$file);
  }
}

sub check_log_file{
  my ($dir,$name) = @_;
  tie my @lines,'Tie::File',$dir.'/'.$name or die $!;
  for my $line(@lines){
      if($line =~ /kein (?:PDF|TIFF)/){
          print "Fehler gefunden\n";
          return;
      }
  }
  untie @lines;
  return 1;
}

sub delete_files{
  my ($dir,$name) = @_;
  my ($basename) = basename($name);
  unlink $basename.'.'.$_ for(qw(log inx pdf));
}


@lines war nicht deklariert probier mal jetzt. steht da was dabei in welcher line der error kommt ?

-renee ... kann man so was in nem tie deklarieren ? ich bekomme keine errors mehr dann denke ich das ist moeglich\n\n

<!--EDIT|fraggs|1157979841-->
mmm twix
renee
 2006-09-11 17:10
#69691 #69691
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
ja, das ist möglich und sollte auch so gemacht werden...
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/
Paul
 2006-09-11 17:48
#69692 #69692
User since
2006-09-11
12 Artikel
BenutzerIn
[default_avatar]
Sorry das ich erst jetzt antworte
musste in ein Meeting

@renee habe dein perl nochmal laufen lassen, jetzt gibt es eine Fehlermeldung:

Code: (dl )
1
2
Can't locate Tie/File.pm in @INC (@INC contains: /usr/local/lib/perl5/5.6.1/sun4-solaris /usr/loca /usr/local/lib/perl5/site_perl/5.6.1/sun4-solaris /usr/local/lib/perl5/site_perl/5.6.1 /usr/localerl .) at ./loeschen3.pl line 6.
BEGIN failed--compilation aborted at ./loeschen3.pl line 6.


sieht für mich so aus als ob etwas fehlt.

@fraggs mit deinem Code gibt es dieselbe Meldung


Frage für was brauche ich "use Tie::File;"

Gruss und Dank
Paul
fraggs
 2006-09-11 17:51
#69693 #69693
User since
2006-09-11
179 Artikel
BenutzerIn
[Homepage] [default_avatar]
ich glaube das sagt einem das das Tie::File modul nicht da ist. dies wird benoetigt um in Perl die disk als arrays zu bearbeiten

CPAN:Tie::File
hier steht wie man so ein modul installiert
PM Modul Installation Info
mmm twix
Paul
 2006-09-11 18:11
#69694 #69694
User since
2006-09-11
12 Artikel
BenutzerIn
[default_avatar]
Super Danke fraggs

gleich morgen früh versuche ich das Modul zu installieren.

Heute gehts nicht, habe gleich das nächste Meeting :(

Gruss und Dank

Paul
<< |< 1 2 3 >| >> 30 Einträge, 3 Seiten



View all threads created 2006-09-11 16:00.