2010-11-22 9 views
0

Ich hoffe, dass jemand mir helfen kann, ich muss Leerzeichen (nicht durch Unterstriche ersetzen) aus mehreren tausend Dateien auf einem System mit Cygwin entfernen. Kann ich das von der Shell aus tun, indem ich irgendwie umbenenne oder mv?Wie man Leerzeichen aus vielen Dateinamen unter Cygwin entfernt

Derzeit:

Datei one.mp3
Datei two.mp3

Alle Dateien benötigen werden:

fileone.mp3

filetwo.mp3

Dank

Antwort

1

Der Standard Cygwin Shell bash ist, so ...

diese Befehlszeile Versuchen Sie, mit dem Verzeichnis $ DIR ersetzen, unter denen Sie ausführen möchten die Umwandlung, und überprüfen Sie die Ausgabe:

find $DIR -type f -name '* *' | while read f; do d="${f%/*}"; f="${f##*/}"; echo mv "$d/$f" "$d/${f// }"; done 

Wenn Sie sind mit den Befehlen zufrieden, die ausgeführt werden würden, entfernen Sie einfach das Echo vor mv und wiederholen Sie die Umbenennung. Beachten Sie, dass dadurch nur Dateien, aber keine Verzeichnisse umbenannt werden.

+0

Perfekter Dank! :) – GWC

+1

Ich bin immer wieder erstaunt, wie einfach Dinge in UNIX-Shells so verworren sein können ... – Joey

0

Zusätzlich zu den oben Antwort Dateinamen zu ändern, hier ist der Code Verzeichnisnamen zu ändern:

find $DIR -type d -name '* *' | while read f; do d="${f%/*}"; f="${f##*/}"; echo mv "$d/$f" "$d/${f// }"; done 

Der einzige Unterschied zu dem Anfang der Zeile das vierte Argument ist. Der Buchstabe "f" wird in "d" geändert, entsprechend der Datei bzw. dem Verzeichnis.

Verwandte Themen