s!mplY Geschrieben 17. April 2007 Geschrieben 17. April 2007 Gegeben: - Alter iMac mit Mac OS9 auf dem ein Datenverzeichnis mit großer Datenmenge. - Neuer Win 2k3 Server auf den das Datenverzeinis transferiert werden soll, um den iMac in den Ruhestand schicken zu können. - Userseitig: neuere iMacs mit OSX (fragt nicht, warum die GF sich für nen WinServer entschieden hat, obwohl alle Clients aus Macs bestehen) Problem: - Die User haben viele (wirklich viele!!!) Dateien/Ordner mit "Win-ungültigen-Zeichen" versehen, z.B. heisst ein Ordner "AF/MF/GB" und ähnliches. Wenn man nun die Daten transferieren will, bricht es Windowsseitig logischerweise ab mit der Fehlermeldung "...kann nicht kopiert werden, da Name zu lang oder ungültige Zeichen" (ähnlicher Wortlaut). Frage: - Gibt es ein Tool/Skript, der die Dateien/Ordner umbenennt beim Kopieren? oder - Kann man Windows irgendwie "umerziehen"? Habe Macseitig schon versucht (dank der Hilfe von Hanzi hier im chat) ISO-Charset zu forcieren per smb.conf, hat aber nix gebracht. Ausserdem weiss ich nicht recht, was ich in google o.ä. als Suchbegriff nehmen soll. Wäre für jede konstruktive Antwort dankbar. Und ja, der Winserver muss bleiben, da kann man nix mehr ändern :cool: Zitieren
Schlaubi Geschrieben 17. April 2007 Geschrieben 17. April 2007 Vielleicht hast Du ja mit AppleScript MacOS9-seitig eine Chance? Zitieren
s!mplY Geschrieben 18. April 2007 Autor Geschrieben 18. April 2007 Danke für den Tip. Keine Ahnung, wie es bei OS9 aussieht (hatte grad keins hier), aber bei OSX gibt es ein schönes vorgefertigtes Applescript, mit dem man Ordner-/Dateinamen per "Suchen und Ersetzen" ändern kann, somit konnte ich Testweise Ordner und Dateien mit Namen "Test/Test" in "test test" ändern o.ä. Zu finden im Ordner "Finder Scripts" (einfach per Spotlight suchen ), das Ganze nennt sich "Replace Text in Item Names.scpt". Feine Sache, da man den entsprechenden Ordner nur per Drag and Drop in das Scriptfenster ziehen muss (unten muss "Beschreibung" ausgewählt sein) und dann auf den Button "Ausführen". Allerdings ändert das Script nur die Ordner/Dateien, die im "Vordergrundfenster" zu sehen sind (also keine Unterordner/Dateien IM Ordner). Das ist alles ein bischen lästig, aber besser als nix. Hab leider keine Ahnung vom Scripten, falls also jemand weiss, wie man einen Ordner auswählen kann um alle Unterordner inkl. Dateien umzubenennen, möge sich bitte melden Hoffe, meine Beschreibung war verständlich. Zitieren
Schlaubi Geschrieben 18. April 2007 Geschrieben 18. April 2007 Schön! Mhm...also wenn Du da mit OSX ran kannst, dann sollte das doch hinzukriegen sein. Ich überlege gerade laut, welche seltamen Zeichen man im Dateinamen so umbennen müsste, dass sie Windows wieder versteht... Um welche Datenmenge handelt es sich denn?? Das grobe Vorgehen: - an einem MacOSX-Client das MacOS9 Volume mounten - kompletten Volume-Baum mit find durchgrasen und für Windows nicht verwendbare Zeichen ersetzen (würde den Umweg über eine Textdatei empfehlen, weil es sich um produktionskritische Daten handelt), inetwa so... # Textdatei mit Pfaden zu allen Dateien und Ordnern des Volumes erstellen (Dauert # je nach Volumegröße mehrere Stunden, Ausgabe auf Bildschirm und in liste.txt) find /Volumes/<macos9vol> -type f -or -type d 2>1 | tee -a ~/Desktop/liste.txt # Wenn wir die Liste haben, müste man von dieser alle Sonderzeichen heraus-"greppen" # und dann ein entsprechendes Kommando aufbauen, um die Sonderzeichen per Skript # zu ersetzen - was besseres fällt mir auf die Schnelle leider nicht ein Hier mal mein Test indem ich in einem Ordner (oder Volume) nach Dateien und Ordner suche, die einen / enthalten (auf der Kommandozeile wird das unter MacOSX als : angezeigt) und mir aus dieser Liste ein Kommondo aufbaue, um in diesen Dateien/Ordner enthaltene / durch einen _ zu ersetzen: schlaubi:~/test schlaubi$ ls -la total 16 drwxr-xr-x 8 schlaubi schlaubi 272 18 Apr 13:44 . drwxr-xr-x 67 schlaubi schlaubi 2278 18 Apr 13:38 .. -rw-r--r-- 1 schlaubi schlaubi 6148 18 Apr 13:44 .DS_Store -rw-r--r-- 1 schlaubi schlaubi 0 18 Apr 13:44 Datei1 -rw-r--r-- 1 schlaubi schlaubi 0 18 Apr 13:44 Datei1: drwxr-xr-x 2 schlaubi schlaubi 68 18 Apr 13:38 Ordner1 drwxr-xr-x 2 schlaubi schlaubi 68 18 Apr 13:38 Ordner3:xyz drwxr-xr-x 2 schlaubi schlaubi 68 18 Apr 13:38 Ordner4:xyz: schlaubi:~/test schlaubi$ schlaubi:~/test schlaubi$ find . -type f -or -type d | grep ":" | while read f; do echo "mv $f $(echo $f | tr : _)"; done mv ./Datei1: ./Datei1_ mv ./Ordner3:xyz ./Ordner3_xyz mv ./Ordner4:xyz: ./Ordner4_xyz_ Zitieren
s!mplY Geschrieben 25. April 2007 Autor Geschrieben 25. April 2007 Danke erstmal für die große Hilfe. Kam die ganze Zeit leider nicht dazu zu antworten. Es handelt sich um ~30GB Daten, die genaue Dateianzahl hab ich grad nicht hier, aber nur soviel, es sind fast alles nur Textverarbeitungs-Dokumente (kaum Bilder, keine Filme). Zu Deinem code: find . -type f -or -type d | grep ":" | while read f; do [COLOR="Red"][B]echo "[/B][/COLOR]mv $f $(echo $f | tr : _)[COLOR="Red"][B]"[/B][/COLOR]; done hat mir zwar angezeigt, daß er etwas getan hat (angeblich), hat es aber nicht; Ordner/Dateien hiessen noch so wie vorher. Habe den code etwas umgeändert: find . -type f -or -type d | grep ":" | while read f; do mv $f $(echo $f | tr : _); done Habe das in Deinem code rot markierte einfach entfernt und schon ging's; leider nur auf oberster Ebene des Ordners. Unterordner oder Dateien auf 2. Ebene oder tiefer blieben unberührt. Führe ich den Befehl nochmal aus OHNE irgendetwas zu verändern (also nur "pfeil hoch" und "enter"), wird alles auf 2. Ebene verändert und die tieferen nicht, usw. D.h. wohl, daß der Befehl nach dem Zeichen sucht und sobald er was findet, alles auf DIESER Ebene ändert und danach aufhört. Ich bräuchte also sowas wie ne "Schleife" oder einen Parameter, der den Befehl solange suchen lässt, bis ALLES auf ALLEN Ebenen gefunden ist. Jemand eine Idee? Zitieren
Schlaubi Geschrieben 25. April 2007 Geschrieben 25. April 2007 ...schau Dir doch bitte mal die Man-Page von find an, speziell die Option -depth Zitieren
Schlaubi Geschrieben 30. April 2007 Geschrieben 30. April 2007 ...bin da noch über was gestolpert, vielleicht hilft Dir das bei Deinem (noch bestehendem??) Problem weiter und zwar das: convmv - converts filenames from one encoding to another Hier die Man-Page dazu. Zitieren
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.