PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Script, das rekursiv Leerzeichen durch _ ersetzt...



SeeksTheMoon
30-07-2002, 18:39
Hallo, ich brauche ein Script, das mir rekursiv von einem Startverzeichnis alle Datei- und Verzeichnisnamen raussucht, die Leerzeichen enthalten und diese durch einen Unterstrich ersetzt.

Mir ist egal, ob es ein Shell-, Perl-, PHP-, tcl-script ist

micha
30-07-2002, 21:20
Hi,



#!/bin/sh

if [ ! -d "$1" ];
then
echo "Usage: $0 [DIRECTORY]"
exit 1
fi

Dir="$1/*"

while true;
do
for File in $Dir;
do
[ "$File" == "$Dir" ] && exit 0

if [ -n "`echo "$File" | grep ' '`" ];
then
Name=`echo "$File" | sed -e 's/ /_/g'`
mv -v "$File" "$Name"
fi
done
Dir=$Dir/*
done

# Never reached ;)
exit 0


Gruß micha

sh_
01-08-2002, 02:51
Hi, hier ne perl loesung:




#!/usr/bin/perl

use warnings;
use strict;

use File::Find;
use File::Copy;

my $Dir = ".";

sub renameIt {

if (/\s/) {
( my $NewName = $File::Find::name ) =~ s/\s+/_/g;
print "\`$File::Find::name' renamed to \`$NewName'\n" if (move($File::Find::name, $NewName));
}

}

find(\&renameIt, "$Dir");



Edit: mmh.. scheint doch nich zu gehen (bei mir). Komischerweise werden die Verzeichnisse nicht rekursiv durchgegangen, sondern nur das oberste (obwohl perldoc von File::Find was anderes sagt..).