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
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
I haven't lost my mind - It's somewhere on a backup-disc
Hi,
Gruß michaCode:#!/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
IRC: irc.euirc.net #tux
Hi, hier ne perl loesung:
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..).Code:#!/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");
Geändert von sh_ (01-08-2002 um 03:10 Uhr)
Lesezeichen