Hallo, On Wed, 07 May 2003, Mathias Homann wrote:
Am Mittwoch, 7. Mai 2003 22:19 schrieb Michael Hoeller:
ich moechte aus MS Windows Dateinamen die Leerzeichen entfernen, gibt es da eine Skrit-Lösung? Mir ist noch nichts eingefallen.
Schau mal ins Archiv der Liste, die Frage kam schon oefter...
for i in *\ *; do mv "$i" $(echo "$i"|sed 's/ //g'); done
oder: for i in *\ *; do mv "$i" $(echo "$i"|sed 's/ /_/g'); done
ersetzt die leerzeichen durch unterstriche...
Prinzipiell richtig. Nur sollte man das nur dann so machen, wenn man genau weiss, welche Dateien vorhanden sind... /tmp/test2 (0)$ ls -lb total 0 -rw-r--r-- 1 dh dh 0 May 8 02:07 a\ b\ c -rw-r--r-- 1 dh dh 0 May 8 02:07 d\ e\tf -rw-r--r-- 1 dh dh 0 May 8 02:07 g\th\ i -rw-r--r-- 1 dh dh 0 May 8 02:07 j\tk\tl -rw-r--r-- 1 dh dh 0 May 8 02:07 m\nn /tmp/test2 (0)$ for i in *\ *; do \ mv "$i" $(echo "$i"|sed 's/ /_/g'); done mv: when moving multiple files, last argument must be a directory mv: when moving multiple files, last argument must be a directory /tmp/test2 (1)$ ls -lb total 0 -rw-r--r-- 1 dh dh 0 May 8 02:08 a_b_c -rw-r--r-- 1 dh dh 0 May 8 02:08 d\ e\tf -rw-r--r-- 1 dh dh 0 May 8 02:08 g\th\ i -rw-r--r-- 1 dh dh 0 May 8 02:08 j\tk\tl -rw-r--r-- 1 dh dh 0 May 8 02:08 m\nn das ist nicht ganz das was man will, siehe die Leerzeichen bei "d e f" und "g h i"... Mal ganz abgesehen von anderen Sonderzeichen, die man ersetzen sollte, selbst wenn man obiges richtig machen will muss man richtig quoten. Also bitte immer richtig quoten: [Ausgangssituation wie oben] /tmp/test2 (0)$ for i in *\ *; do \ mv "$i" "`echo \"$i\" | sed 's/ /_/g'`"; done /tmp/test2 (1)$ ls -lb total 0 -rw-r--r-- 1 dh dh 0 May 8 02:12 a_b_c -rw-r--r-- 1 dh dh 0 May 8 02:12 d_e\tf -rw-r--r-- 1 dh dh 0 May 8 02:12 g\th_i -rw-r--r-- 1 dh dh 0 May 8 02:12 j\tk\tl -rw-r--r-- 1 dh dh 0 May 8 02:12 m\nn Alternativ geht auch: for i in *\ *; do mv "$i" "$(echo "$i" | sed 's/ /_/g')"; done Man beachte die "" um das `` bzw. $() und die "" bzw. \"\" um das $i. -dnh -- A layman knows he has to kick it.; An amateur knows where to kick it.; A professional knows how hard.