[Vienna-pm] tip fuer script

Peter J. Holzer hjp-vienna-pm-list at hjp.at
Sun Sep 7 08:54:38 CDT 2003


On 2003-09-07 15:22:40 +0200, Marcel Grünauer wrote:
> On Sonntag, September 7, 2003, at 02:59  Uhr, Michael Ebner wrote:
> 
> >  ich suche eine Script (perl) mit dem ich Dateinamen inklusive
> >  Unterverzeichnise normalisieren kann.
> [...]
> >  Am liebsten waere mir ein Script bei dem ich das für bestimmte
> >  Zeichen festlegen kann, für andere Zeichen die unbekannt sind einfach
> >  irgend ein Standard Zeichen.
> 
> ich verwende da immer das 'rename'-Programm; ich hab's bei einigen
> Linux-Distros schon gesehen, aber es ist trivial:
> 
> #!/usr/bin/perl
> $operation = shift;
> for (@ARGV) {
>     $had_been = $_;
>     eval $operation;
>     rename($had_been, $_) unless $had_been eq $_;
> }

Das ist leider im allgemeinen Fall nicht ganz trivial. Wenn Du z.B. 
Umlaute durch ae, oe, ... ersetzt, und ein Directory enthält einen
Umlaut, dann existiert entweder das Quell- oder das Zieldirectory zum
Zeitpunkt der Umbenennung nicht, wenn Du Filenamen als ganzes
behandelst.

Hier ist mein Ansatz: 

---8<------8<------8<------8<------8<------8<------8<------8<---
#!/usr/bin/perl -w
#
# $Id: sanitize_umlauts,v 1.1 2002/10/27 12:28:59 hjp Exp $
#

use strict;
use File::Find;


sub wanted {

    if (/[\204\224\201\216\231\232\341\202]/) {
	my $new = $_;
	$new =~ tr/\204\224\201\216\231\232\341\202/äöüÄÖÜßé/;
        print $File::Find::dir, ": $_ -> $new\n";
	rename $_, $new or die "cannot rename $_ to $new: $!";
    }
}



if (@ARGV == 0) { push (@ARGV, "."); }
finddepth(\&wanted, @ARGV);

print "\n\n";
---8<------8<------8<------8<------8<------8<------8<------8<---

Die Ersetzung ersetzt MS-DOS Umlaute durch solche des lokalen Charsets. 
Bitte an die Anforderungen anpassen. 

Das finddepth macht jeweils ein chdir in das Directory hinein (so dass
man nur mit "einfachen" Filenamen zu tun hat) und behandelt das
Directory selbst nach allen darin enthaltenen Files und Subdirectories
(so dass man es sicher umbenennen kann ohne den weiteren Ablauf zu
stören).

	hp

-- 
   _  | Peter J. Holzer    | Humor ohne Emoticons ist trockener Humor.
|_|_) | Sysadmin WSR       | 
| |   | hjp at hjp.at         |	-- Toni Grass in aip
__/   | http://www.hjp.at/ |
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://mail.pm.org/pipermail/vienna-pm/attachments/20030907/3ac978af/attachment.bin


More information about the Vienna-pm mailing list