linux-l: Viele jpg -> ps

Ralf Bärwaldt Ralf.Baerwaldt at partner.bmw.de
Mi Mär 21 10:16:02 CET 2001


> Obwohl es in der man-page zu basename keinen Verweis auf den verwandten
> Befehl dirname gibt, habe ich ihn irgendwie gefunden.

ja, mit dirname kannst du verhindern, dass du dir die
Verzeichnisstruktur zerstoerst.

>  Aber mit dem 'for i in' habe ich noch ein Problem! Wenn ein Verzeichnis
> oder eine Datei ein Leerzeichen im Namen hat, dann wird es als
> Trennzeichen interpretiert! Kann man das irgendwie verhindern?

Ich habe auch haeufiger das Problem mit Leerzeichen in
Dateinamen und habe deshalb ein kleines Programm geschrieben,
dass aus Leerzeichen Underlines macht. Du darfst es gern
verwenden, wenn es dir nichts ausmacht, dass deine Files
dann anders heissen:

space2underline.pm:
**********************************************************
#!/usr/bin/perl -w 

#       Dieses Script sucht nach Dateinamen welche ein Space enthalten
#       und ersetzt dieses Space durch Unterstrich

#       Paramter:
#       $1 = Verzeichnis(se), welche(s) durchsucht werden soll;
#               Default = aktuelles Verzeichnis

my $DIR;
my $FILE1;
my $FILE2;
my $AURTRAG;
my $ERGEBNIS;

$DIR = join (' ', @ARGV) or $DIR = ".";

# print STDERR "$DIR \n";

open (FH, "find $DIR -name '* *' -print 2>/dev/null |");

while (<FH>) {
	chomp;
	$FILE1 = $_;
	$FILE2 = $_;
	$FILE2 =~ tr{ }{_};
	$AUFTRAG = "$FILE1 --> $FILE2 = ";
	if ( -e $FILE2 ) {
		$ERGEBNIS = "FATAL: File already exists !";
	} else {
		chomp ($ERGEBNIS = `mv "$FILE1" "$FILE2" 2>&1 && echo "OK"`);
		$ERGEBNIS = "ERROR $ERGEBNIS" unless ( $ERGEBNIS eq "OK" );
	};
	`logger -s -p cron.notice -t sp2ul -- "${AUFTRAG}${ERGEBNIS}"`;
}



Mehr Informationen über die Mailingliste linux-l