Zum Inhalt springen

Dateinamen mit Leerzeichen


c-i-k-o

Empfohlene Beiträge

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
done

Leider 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/Dies
mv: cannot access ist
mv: cannot access eine
mv: cannot access Mail

mv: 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.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

 

#!/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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...