Am Sa, 12 Mär 2011 12:01:29 CET schrieb Jan Ritzerfeld: Hallo Jan,
Ich habe eine Reihe von Dateien in einem Ordner inklusive Unterverzeichnisse bei denen der Erweiterungspunkt irrtümlich entfernt wurde.
also etwa so /dir1/dir2/abcdefgpdf oder /dir1/blatxt
Wie füge ich am besten den Erweiterungspunkt 3 Zeichen vor Ende des Dateinamens ein?
find /dir1 -type d -exec mmv -v '{}/*???' '{}/#1.#2#3#4' \;
Aber mach vorher ein Backup der Dateien, ich weiß nicht, ob das wirklich alle Sonderfälle korrekt berücksichtigt
Die Dateien sind chaotisch und nicht von mir. Teilweise befindet sich im Dateinamen so was wie \233, teilweise sind Sonderzeichen korrekt. Ich habe zur Vereinfachung einiges ersetzt: # Es ist auszuschließen, dass Dateinamen bis auf Klein- und Großschreibung ident sind, Die Dateien kommen von einem Windows-PC. find . -print | sort -r | while read i ; do n="`dirname "$i"`/`basename "$i" | sed -e 's/[ÁáÀàÂâÃãåÅăāảấậắẫạặằẩẩǎ]/a/g' -e 's/[ÆÄäæ]/ae/g' -e 's/[Çç]/c/g' -e 's/ć/c/g' -e 's/č/c/g' -e 's/[ż]/z/g' -e 's/[ÉéÈèÊêËëěếễểệēề]/e/g' -e 's/ỹýÝ/y/g' -e 's/´//g' -e 's/\`//g' -e 's//g' -e 's/[=#]//g' -e 's/\%//g' -e 's/>//g' -e 's/[°º]//g' -e 's/ /_/g' -e 's/ /_/g' -e 's/ - /_/g' -e 's/ /_/g' -e 's/___/_/g' -e 's/__/_/g' -e 's/-/_/g' -e 's/,/_/g' -e 's/¡//g' -e 's/’//g' -e 's/"//g' -e 's/(//g' -e 's/)//g' -e 's/«//g' -e 's/»//g' -e 's/{//g' -e 's/}//g' -e 's/\://g' -e 's/\!//g' -e 's/\?//g' -e 's/¿//g' -e 's/\//_/g' -e 's/\[//g' -e 's/\]//g' -e 's/\*//g' -e 's/\&//g' -e 's/+//g' -e 's/΄//g' -e "s/'//g" -e 's/[Ğğ]/g/g' -e 's/[IÍíÌìÎîıİiïīịĩǐ]/i/g' -e 's/[Ññ]/n/g' -e 's/[Öö]/oe/g' -e 's/[ÓóÒòÔôÕõōøơộồọớỏờổỗốợở]/o/g' -e 's/[Œœ]/oe/g' -e 's/[Đđ]/d/g' -e 's/ř/r/g' -e 's/š/s/g' -e 's/[Şşś]/s/g' -e 's/ß/ss/g' -e 's/[Üü]/ue/g' -e 's/[ÚúÙùÛûụưủựứửữǔū]/u/g' -e 's/ž/sch/g' -e 's/∞/infinite/g' -e 's/²/2/g' -e "s/|/_/g" -e "s/&/_/g" -e "s/ /_/g" -e "s/'/_/g" -e 's/["“”]//g' -e "s/,//g" -e "s/(/_/g" -e "s/)/_/g" -e "s/___/_/g" -e "s/__/_/g" | tr '[[:upper:]]' '[[:lower:]]'`" [ "$i" != "$n" ] && mv "$i" "$n" 2>/dev/null done Somit sind keine Leerzeichen mehr vorhanden und wahrscheinlich auch keine Sonderzeichen, aber sicher bin ich mir da nicht. Großbuchstaben sollten auch keine mehr vorhanden sein.
Beispielsweise solltest du das nicht mehrfach ausführen, sonst bekommst du jedes Mal einen Punkt mehr.
Klar
Das gilt natürlich genauso für Dateien, die schon einen Punkt haben, die bekommen dann noch einen mehr.
Auch klar und wäre weiter nicht tragisch Ich verstehe in deinem Beispiel nicht "-type d". IMHO sollte das "-type f" sein. Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org