c-i-k-o Geschrieben 9. Oktober 2015 Teilen Geschrieben 9. Oktober 2015 Hallo Zusammen, ich stehe erneut einem Porblem bzgl. des Umzugs auf ein neues Share entgegen. Undzwar habe ich in sämtlichen Ordnern mit Unterordnern msg-dateien. Das Manko an der Sache ist, dass die msg-Dateien im Namen mehrere Leerzeichen haben - manchmal direkt zwei oder drei hintereinander. Die Dateinamen sind somit zu lang für das neue Share und führen zum Aufschlag einer Fehlermeldung.Mein Ziel ist es jetzt die Leerzeichen aus dem Dateinamen zu entfernen und anschließend die Dateinamen so zu kürzen, dass nur die ersten 40 Zeichen und am ende .msg bestehen bleibt.Dazu habe ich folgendes Skript geschrieben (vorerst nur um die Leerzeichen zu entfernen, denn daran scheitert es schon :/ ): #!/bin/bash for i in `find Ordner/ -type f -name "*.msg"` do NEWNAME=`echo "$i" | sed "s/ //g"` mv $i $NEWNAME doneLeider wird jedes Wort nach einem Leerzeichen in die Variable i gepackt, sodass nicht der ganze Dateinamen in i zwischengespeichert wird, sondern die einzelnen Wörter.Daraus folgt folgende Fehlermeldung:mv: cannot access Verzeichnis/Unterverzeichnis/Unterverzeichnis/Diesmv: cannot access istmv: cannot access einemv: cannot access Mailmv: Insufficient arguments (1)Usage: mv [-f] [-i] f1 f2 mv [-f] [-i] f1 ... fn d1 mv [-f] [-i] d1 d2,Ich ale Neuling, kann die Ursache nicht finden und hoffe auf eure Unterstützung. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
feuerjinn Geschrieben 9. Oktober 2015 Teilen Geschrieben 9. Oktober 2015 #!/bin/bash for i in `find Ordner/ -type f -name "*.msg"` do NEWNAME=`echo "$i" | sed "s/ //g"` mv $i $NEWNAME done Versuch mal folgendes zu benutzen:#!/bin/bash for file in $(find Ordner/ -type f -name "*.msg") #1 do path=$(dirname "$file") #2 NEWNAME=$(basename "$file" | sed "s/ //g") #3 echo $NEWNAME #4 #mv $path/"$file" $path/$NEWNAME #5 done#1: Variable i wurde in file umbenannt. Damit weißt du was gemeint ist#2: Wir speichern uns den Pfad der Datei in eine Variable path. Denn wir wollen nur Dateien und nicht Ordner umbennen#3: Wir passen nur die Datei im Pfad an.#4: Testausgabe, man sollte immer erst prüfen, ob mein skript macht was es soll, bevor ich anfange Befehle wie mv, rm, etc zu verwenden.#5: Die Ausführung wurde wegen #4 auskommentiert. Das Verschieben wurde mittels vorrangestelltem Pfad erweitert. Außerdem wurde die Variable $file mit "" versehen, aufgrund der Leerzeichen.Anmerkung:Die `befehl` wurden durch die Standard POSIX-Syntax ersetzt: $(befehl)Nachschlagebefehle:Du kannst auf http://ss64.com/bash/ die Befehle dirname und basename einmal nachschlagen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
c-i-k-o Geschrieben 9. Oktober 2015 Autor Teilen Geschrieben 9. Oktober 2015 Hallo feuerjinn,danke für deine Hilfe. Ich habe soeben deinen Code kopiert und ausgeführt.Die Ausgabe:FWDiesist-eineMail-Beispiel-.msgich kann nicht nachvollziehen, warum er den Dateinamen als solches in mehrere Strings trennt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.