linux-l: Skripting (Re: Q: Umwandlung von Dateinamen)
Fabian Walk
fabian at narf.in-berlin.de
Fr Okt 16 20:22:49 CEST 1998
On Don, 15 Okt 1998, you wrote:
>Glaub's mir einfach oder probier's aus. Wenn der in der ersten Skriptzeile
>angegebene Interpreter (hier die bash) nicht gefunden wird, erscheint die
>Fehlermeldung, die man naiverweise so interpretiert, dass das Skript nicht
>gefunden wurde. Sehr verwirrend, darum geb' ich diese Erfahrung ja weiter.
Bei mir ist die bash korrekt installiert und ich benutze sie auch als
Standard-Shell. Das Script lowercase.sh ligt in meinem ~/bin/ Verzeichnis und
ist ausführbar also x-Bit gesetzt.
Ich habe jetzt das lowercase.sh Script etwas erweitert. Wenn ich in
meinem test-Verzeichnis welches folgenden Inhalt hat:
drwx------ 2 fabian users 1024 Oct 16 20:12 ./
drwxr-xr-x 25 fabian users 2048 Oct 16 19:43 ../
-rw-r--r-- 1 fabian users 16 Oct 15 22:17 T!eS~T.TxT
-rw-r--r-- 1 fabian users 16 Oct 16 20:12 TEST.TXT
-rw-r--r-- 1 fabian users 4913 Sep 10 22:09 dup-sort.txt
wie folgt das Script starte:
fabian at narf:/home/fabian/test > lowercase.sh /home/fabian/test/
passiert gar nichts. Ich bekomme jetzt nichtmal eine Fehlermeldung und die
Dateien im meinem test-Verzeichnis sind unverändert.
Wenn ich hingegen den find Befehl mit allen im Script enthaltenen Parametern,
ohne die -exec und folgende Anweisungen, starte und $1 duch ~/test/
ersetze werden alle Dateien korrekt gefunden.
Wenn ich alles nach -exec starte läuft es tadelos und die statt {} angegebene
Datei wird umgewandelt.
Sobalt ich aber den gesamten Befehl aus dem Script in der Kommandozeile starte
und nur die Variable $1 duch mein ~/test Verzeichnis ersetze, treten die oben
beschriebenen Symtome auf.
Wie kann ich nun erreichen das es wirklich zusammen in einem Schellscript
funktioniert.
Anbei mein Script:
#!/bin/bash
# Name : lowercase
# Datum : 1998-10-16
# Autor : Fabian Walk
# Funktion: konvertiert alle mit find gefundenen Dateinamen des als Parameter
# übergebenden Verzeichnises in Kleinbuchstaben und entfernt die
# Sonderzeichen ~ und !.
#
find $1 -name *"[A-Z]"* -or -name *"\!"* -or -name *"\~"* -exec mv -i {} \
$(echo {} | sed -e "y/ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ/abcdefghijklmn \
opqrstuvwxyzäöü/" -e "s:[!~]::g") \;
Bye und Danke
--
Fabian fabian at narf.in-berlin.de
Mehr Informationen über die Mailingliste linux-l