ianders
Linux Jungspund
Hallo,
ich hatte mir mal vor einiger Zeit ein Script gebastelt, was auch für mich zufriedenstellend arbeitet. Ziel ist es Daten und Ordner mit Umlauten (Sonderzeichen, ...) zu finden und umzubenennen. Nun wollte ich das Script wieder anwenden - auf ext3 und FAT32 Partitionen kein Problem, aber auf der ntfs-Partition verweigert sich das Script vernünftig zu laufen. Also es geht zwar los aber beim Umbenennen kommt immer die Fehlermeldung:
mv: Verschieben von [Pfad und alter Dateiname] nach [Pfad und neuer Dateiname] nicht möglich: Datei oder Verzeichnis nicht gefunden
Ich verstehe nun nicht wie es zu diesem Fehler kommt.
Das es zu dieser Fehlermeldung kommt wenn er den Ordner umbenannt hat bevor er die Dateien umbenennt (umgekehrt wäre besser, weiß aber gerade nicht wie) ist klar, aber das ist hier nicht der Fall, denn wenn ich die Daten auf eine andere Festplatte kopiere, dann läuft das Script wies soll.
P.S.: also manuell die Daten und Ordner umbenennen geht, aber das wollte ich nicht machen, dafür sind es viel zu viele Daten...
Edit 11.6.08:
PPS.:
Verwendetes System: Suse 10.3
ich hatte mir mal vor einiger Zeit ein Script gebastelt, was auch für mich zufriedenstellend arbeitet. Ziel ist es Daten und Ordner mit Umlauten (Sonderzeichen, ...) zu finden und umzubenennen. Nun wollte ich das Script wieder anwenden - auf ext3 und FAT32 Partitionen kein Problem, aber auf der ntfs-Partition verweigert sich das Script vernünftig zu laufen. Also es geht zwar los aber beim Umbenennen kommt immer die Fehlermeldung:
mv: Verschieben von [Pfad und alter Dateiname] nach [Pfad und neuer Dateiname] nicht möglich: Datei oder Verzeichnis nicht gefunden
Ich verstehe nun nicht wie es zu diesem Fehler kommt.
Das es zu dieser Fehlermeldung kommt wenn er den Ordner umbenannt hat bevor er die Dateien umbenennt (umgekehrt wäre besser, weiß aber gerade nicht wie) ist klar, aber das ist hier nicht der Fall, denn wenn ich die Daten auf eine andere Festplatte kopiere, dann läuft das Script wies soll.
Code:
#!/bin/bash
trap 'test -d umlautetmp && rm -r umlautetmp; exit 1' 2
#script zum suchen und umbenennen von dateien mit umlauten, apostoph und leerzeichen
mkdir umlautetmp
echo "Script zum suchen und Umbenennen von Umlauten. Apostroph UND Leerzeichen "
echo "Verzeichniss angeben aber ACHTUNG Achtung: nichs fuer $HOME:"
read verz
if [ -z "$verz" ] ; then
class=`groups`
user=`whoami`
echo "Suchen nach Dateien in /users/class/$class/$user..."
find /users/class/"$class"/"$user" -depth -iname "* *" -o -iname "*_*" -o -iname "*Ä*" -o -iname "*Ö*" -o -iname "*Ü*" -o -iname "*ä*" -o -iname "*ö*" -o -iname "*ü*" -o -iname "*ß*" -o -iname "ß" -o -iname "*ä*" -o -iname "*ö*" -o -iname "*ü*" -o -iname "*ß*" -o -iname "Ãœ*" -o -iname "*ß*" -o -iname "*Ä*" -o -iname "*´*" -o -iname "*´*" > umlautetmp/old.tmp
#cat umleer.tmp
else
echo "Suchen nach Dateien in $verz..."
find "$verz" -depth -iname "* *" -o -iname "*_*" -o -iname "*Ä*" -o -iname "*Ö*" -o -iname "*Ü*" -o -iname "*ä*" -o -iname "*ö*" -o -iname "*ü*" -o -iname "*ß*" -o -iname "ß" -o -iname "*ä*" -o -iname "*ö*" -o -iname "*ü*" -o -iname "*ß*" -o -iname "Ãœ*" -o -iname "*ß" -o -iname "*ß*" -o -iname "*Ä*" -o -iname "*´*" -o -iname "*´*" > umlautetmp/old.tmp
#cat umleer.tmp
fi
cat umlautetmp/old.tmp | sed -e 's/Ä/ae/g; s/Ö/oe/g; s/Ü/ue/g; s/ä/ae/g; s/ö/oe/g; s/ü/ue/g; s/ß/ss/g; s/ß/ss/g; s/ö/oe/g; s/ä/ae/g; s/ü/ue/g; s/Ãœ/ue/g; s/Ö/oe/g; s/ß/sz/g; s/Ãœ/ue/g; s/ß/ss/g; s/Ä/ae/g; s/Ä„/ae/g; s/ß/ss/g; s/ //g; s/_//g; s/Ä/ae/g; s/´//g; s/´//g' >umlautetmp/new.tmp
anz=`wc -l<umlautetmp/old.tmp`
i=1
while [ $i -le $anz ] ; do
oldzeile=`head -$i umlautetmp/old.tmp | tail -1`
newzeile=`head -$i umlautetmp/new.tmp | tail -1`
oldbasename=`basename "$oldzeile"`
newbasename=`basename "$newzeile"`
filetype=`file "$oldzeile" | cut -d: -f2`
echo "$filetype '$oldbasename' in '$newbasename' umbenennen...?(y/n)"
echo ' yes ? '
read best
if [ "$best" = y ] ; then
mv "$oldzeile" "$newzeile"
fi
i=`expr $i + 1`
done
test -d umlautetmp && rm -r umlautetmp
exit 0
#-----ERRORCODES-----
#1 -- CTRL + C abbruch
Edit 11.6.08:
PPS.:
Verwendetes System: Suse 10.3
Zuletzt bearbeitet: