[Debian]:Re: Dateinamen von Gross auf klein aendern ?
On Thu, 27 Jan 2000, Andre Vaupel wrote:
> ..und noch was kurz :-)
>
> Wie war gleich der Befehl um grosse Verzeichnisnamen und Dateinamen
> in Kleinbuchstaben zu wandeln ?
Ich habe mal sowas gemacht, weil bei uns Leute (Win-Fanatiker)
sämtliche Dateinamen in einem HTML-Baum (einschließlich natürlich
der Links in den Dateien) groß geschrieben haben.
Als Attachment habe ich die Sachen angehängt mit denen ich Dateinamen
und Links umgewandelt habe.
ACHTUNG: Keine Gewähr daß irgendwas funktioniert.
Hoffe das hilft
Andreas.
#!/usr/bin/perl -w
# Filtern der Eingabe auf Wörter mit bestimmten Erweiterungen
# und Umwandlung in Kleinschreibung der gefundenen Wörter.
# Erweiterungen können in @EXT definiert werden
#
# Copyright Andreas Tille <tillea@rki.de>
#
my ( @EXT, $ext, $zeile );
@EXT = qw ( HTM JPG GIF CSS PFR ) ;
while ( <> ) {
$zeile = $_ ;
@TMPEXT = @EXT;
while ( @TMPEXT ) {
$ext = shift (@TMPEXT) ;
if ( $zeile =~ /\.$ext/ ) {
$_ = $zeile ;
# hier wird noch der erste '/' weggeraspelt, was aber zu Fehlern führt
# s/\/*([-A-Z0-9\/_\.]*\.$ext)/\L$1/g ;
s/([-A-Z0-9\/_\.]*\.$ext)/\L$1/g ;
$zeile = $_ ;
}
}
print $zeile ;
}
#!/bin/sh
# Shell Skript zum Kopieren einer Verzeichnisstruktur, wobei
# Dateinen mit Groszbuchstaben in Kleinbuchstaben umgewandelt
# werden.
# Treten in den Dateien Verweise auf Dateien auf, so werden diese
# ebenfalls in Kleinbuchstaben umgewandelt. Dieses geschieht
# im Perl-Script uc2lc. Dort können Dateinamenserweiterungen,
# für die das gelten soll eingegeben werden.
#
# Voraussetzungen
# find, grep, sed (möglicherweise nur GNU-sed)
# per für uc2lc-Script
#
# Copyright Andreas Tille <tillea@rki.de>
#
SRC=.
DEST=../uc2lc
TMP=/tmp/files-uc2lc
if [ _$1 != _ ] ; then
SRC=$1
fi
if [ _$2 != _ ] ; then
DEST=$2
fi
if [ ! -d $DEST ] ; then
mkdir -p $DEST
fi
for dir in `find $SRC -type d | \
grep -v "^\.$" | \
sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/" | \
sed "s?^\./??" `
do
mkdir -p $DEST/$dir
done
find . -type f | sed "s?^\./??" > $TMP
for file in `cat $TMP`
do
dest=`echo $file | \
sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/"`
cat $file | \
uc2lc | \
cat > $DEST/$dest
done
## Möglichkeiten für groß zu klein:
# perl -p -e 's/([A-Z])/\l$1/g' file
# perl -p -e 's/(.*)/\L$1/g' file
# tr '[A-Z]' '[a-z]' <file
# sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/"
Reply to: