Mit Perl Verzeichnisinhalt auslesen und in txt Datei schreiben!


psifactory

Erfahrenes Mitglied
Hi,

für ein Playlistfile benötige ich ein Script welches mir den Verzeichnissinhalt eines gewählten Verzeichnisses ausliest und in eine txt Datei schreibt. Habe schonmal etwas probiert was auch wunderbar funktioniert:

Code:
#!/usr/bin/perl -w

use strict;

my $toppath = "/home/shoutcast/mp3";
my $path = "test";
my $header = "# DATEIHEAD\n";
my $output = "listing.txt";

system("ls -algGR $toppath > $path");

# Lese Handle ein

open(OUTP, ">$output");
open(FH, "< $path");
print OUTP "$header";
while(<FH>)
{
chomp;
if($_ =~ /^d/)
{
print OUTP "$_\n";
}
else
{
print OUTP "$_\n";
}
}
close(FH);
close(OUTP);
Allerdings wird folgendes in die Datei geschrieben:

Code:
# DATEIHEAD
/home/shoutcast/mp3:
total 41000
drwxrwxr-x    2     4096 May 23 17:07 .
drwxr-xr-x    5     4096 May 27 11:00 ..
-rw-rw-r--    1 21777970 May 23 17:08 01-jichael_mackson-flatscreen.mp3
-rw-rw-r--    1 12439172 May 23 17:08 02-rodriguez_jr.-b1_soledad.mp3
-rw-rw-r--    1  7697604 May 23 17:07 b2-moonbeam-spring_story.mp3
Wie kriege ich dort dann die mit rot markierten sachen weg?

EDIT: Habe es hinbekommen. Musste nur "-algGR " entfernen damit es läuft!
 
Zuletzt bearbeitet:

renee

Erfahrenes Mitglied
Warum so umständlich?

Code:
#!/usr/bin/perl

use strict;
use warnings;

my $directory = "/home/shoutcast/mp3";
my $header = "# DATEIHEAD\n";
my $output = "listing.txt";

opendir my $dirh, $directory or die $!;
open my $out, '>', $output or die $!;
print $out $header;
while( my $entry = readdir $dirh ){
    # alles was keine Datei ist, soll nicht eingetragen werden
    next unless -f $directory . '/' . $entry;
    print $out $entry,"\n";
}
close $out;
closedir $dirh;
 

Neue Beiträge