Hallo Liste, ich moechte aus MS Windows Dateinamen die Leerzeichen entfernen, gibt es da eine Skrit-Lösung? Mir ist noch nichts eingefallen. Besten Dank für jeden Tipp Michael -- Encrypted eMail welcome! Get my OpenPGP-Key ID: 0xE9B00731 from: wwwkeys.de.pgp.net
Am Mittwoch, 7. Mai 2003 22:19 schrieb Michael Hoeller:
Hallo Liste,
ich moechte aus MS Windows Dateinamen die Leerzeichen entfernen, gibt es da eine Skrit-Lösung? Mir ist noch nichts eingefallen.
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... bye, MH -- Die unaufgeforderte Zusendung einer Werbemail an Privatleute verstößt gegen §1 UWG und 823 I BGB (Beschluß des LG Berlin vom 2.8.1998 Az: 16 O 201/98). Jede kommerzielle Nutzung der übermittelten persönlichen Daten sowie deren Weitergabe an Dritte ist ausdrücklich untersagt! gpg key fingerprint: 5F64 4C92 9B77 DE37 D184 C5F9 B013 44E7 27BD 763C
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.
On Don, 08 Mai 2003 at 02:16 (+0200), David Haller wrote: [...]
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.
Und auch hier wieder meine Standard-Anmerkung (ich sollte mir dafür langsam einen Robot bauen ;-): Diese Konstruktionen brüllen allesamt *Datenverlust!*: jan@k500:~/tmp/leer> touch "a b c" "a b_c" "a_b c" "a_b_c" jan@k500:~/tmp/leer> ls -l insgesamt 0 -rw-r--r-- 1 jan users 0 Mai 9 23:25 a b c -rw-r--r-- 1 jan users 0 Mai 9 23:25 a b_c -rw-r--r-- 1 jan users 0 Mai 9 23:25 a_b c -rw-r--r-- 1 jan users 0 Mai 9 23:25 a_b_c jan@k500:~/tmp/leer> for i in *\ *; do mv "$i" "$(echo "$i" | sed 's/ /_/g')"; done jan@k500:~/tmp/leer> ls -l insgesamt 0 -rw-r--r-- 1 jan users 0 Mai 9 23:25 a_b_c So kann ich natürlich auch meine Festplatten putzen! Also mindestens: for i in *\ *; do mv -i "$i" "$(echo "$i" | sed 's/ /_/g')"; done ^^ Beser ist es immer, die Existenz der Zieldatei vorher abzuprüfen. Jan
Hi Michael, Am Mittwoch Mai 07 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.
ich mache das mit mmv: mmv "* *.mp3" "#1_#2.mp3" ergibt: Leerzeichen zu Unterstrich Da habe ich das für mich gespeichert: http://linux.jrt.de/dateien_umbenennen.htm Gued gohn Joachim Tüns
Am Mittwoch, 7. Mai 2003 21: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.
fuer KDE3: www.krename.net cu stonki -- www.proftpd.de: Deutsche ProFTPD Dokumentation www.krename.net: Der Batch Renamer für KDE www.kbarcode.net: Die Barcode Solution für KDE www.stonki.de
participants (6)
-
David Haller
-
Jan.Trippler@t-online.de
-
Joachim Tüns
-
Mathias Homann
-
MichaelHoeller@t-online.de
-
Stefan Onken