greenbyte
Goto Top

Problem Dateinamen mit Sonderzeichen beim verschieben von Dateien von OSX auf Windows

Hallo
mehrere Verzeichnisse sollen von OSX (xserv) auf einen Windows Server verschoben werden.
Leider haben einige der Dateinamen Sonderzeichen / \ : * ? " < > | die Windows nicht verdaut.
(Das wirkt sich so aus, dass das Veschieben unter OSX gar nicht angeboten wird und unter windows einfach ohne Fehlermeldung nicht funktioniert)

Frage: wie kann ich die Dateinamen "Windows konform" machen, ohne jede Datei einzeln anfassen zu müssen?
Danke für die Hilfe!
MIchael

Content-ID: 251866

Url: https://administrator.de/contentid/251866

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

colinardo
colinardo 14.10.2014 aktualisiert um 13:40:25 Uhr
Goto Top
Hallo Michael,
könntest du mit einem Bash-Script unter OSX erledigen, das die Sonderzeichen z.B. durch einen Unterstrich ersetzt:
#!/bin/bash
find . -depth -name "*[\<\>/\*\?\|\"\:]*" |  
while read FILEDIR
do
  DIR="${FILEDIR%/*}"  
  FILE="${FILEDIR/*\/}"  
  NEWFILE="${FILE//[\<\>\/\*\?\|\"\:]/_}"  
  mv "$DIR/$FILE" "$DIR/$NEWFILE"  
done
find . -depth -name "*?." -type d |  
while read DIR
do
  NEWDIR="${DIR/%./}"  
  if ! test -d "$NEWDIR" ;then  
    mv "$DIR" "$NEWDIR"  
  fi
done
Dazu öffnest du einen Terminal, wechselst in dein Verzeichnis mit den Dateien und gibst dann folgendes ein
nano replace.sh
In dedn Editor fügst du dann obigen Code ein, und drückst STRG+O um das Script zu speichern, danach ein STRG+X um den Editor zu verlassen. Dann das Script noch ausführbar machen:
chmod +x replace.sh
und zum Schluss mit einem
./replace.sh
das Script starten.

WICHTIG das Script durchläuft immer alle Dateien und Ordner in dem man sich in der Shell aktuell befindet !
Bitte erst an einem Testordner bei dir testen. Das Script durchläuft alle Ordner unterhalb des aktuellen Ordners rekursiv

Grüße Uwe
GrEEnbYte
GrEEnbYte 14.10.2014 um 12:48:26 Uhr
Goto Top
Hallo Uwe
vilen Dank für Deine ausführliche gute Anleitung.
Ich bin allerdings Neuling in der bash face-smile
Ich bin jetzt in das Verzeichnis gewechselt habe das script dort hin kopiert und ausgeführt. Gibt allerdings eine Fehlermeldung:
./replace.sh: line 1: !/bin/bash: No such file or directory
Allerdings ersetzt das script trotzdem.
Ein weiterers Problem auf das ich gestossen bin:
Es finden sich in den Verzeichnisnamen am (Ende des Namens) auch Punkte die Windows nicht schmecken. gibt es dafür auch eine Lösung face-smile
Und noch etwas (es ist zum heulen):
Icon Dateien die Windows nicht verdaut. Ich habe folgendes gefunden:
It's name is actually Icon\r, with \r being the carriage return 0x0D. If letting the shell autocomplete the path in Terminal, it yields Icon^M, ^M being \r.
Icon^M is a file existing in all directories that have a custom icon in Finder. If you change a directory's icon e.g. in its Get Info dialog by pasting an image into the icon in the upper left corner, the Icon^M file is created.

Hast Du einen Tip?
Danke!!
ciao
Michael
colinardo
colinardo 14.10.2014 aktualisiert um 12:54:49 Uhr
Goto Top
Zitat von @GrEEnbYte:
Ich bin jetzt in das Verzeichnis gewechselt habe das script dort hin kopiert und ausgeführt. Gibt allerdings eine
Fehlermeldung:
./replace.sh: line 1: !/bin/bash: No such file or directory
Hatte beim Kopieren die Raute am Zeilenanfang der ersten Zeile nicht mitkopiert , sorry ist oben korrigiert ... ist aber für die Funktion des Scripts nicht relevant.
Ein weiterers Problem auf das ich gestossen bin:
Es finden sich in den Verzeichnisnamen am (Ende des Namens) auch Punkte die Windows nicht schmecken. gibt es dafür auch eine
Lösung face-smile
schau ich gleich mal

Darf man fragen wie du den Haufen an Mist produziert hast ?
GrEEnbYte
GrEEnbYte 14.10.2014 um 13:13:04 Uhr
Goto Top
Hallo Uwe
Das war nicht ich sondern die Creativos die auf dem Mac arbeiten. Da muss jeder Dateiname eine Geschichte erzählen, und das mit kompletter Zeichensetzung

ciao
Michael
colinardo
colinardo 14.10.2014 um 13:31:18 Uhr
Goto Top
Habe die Ordner oben mal mit eingebaut, teste mal ...