Nachdem ich mich in letzter Zeit so nebenbei etwas mit Ruby beschaeftigt habe und mir heute nach dem Download einiger Podcasts die Dateien mit "%20" im Dateinamen praesentiert wurden, wollte ich das mal mit Ruby statt zmv loesen.
Nach etwa zwei Minuten ist dabei dieser Einzeiler, der sich direkt auf der Ruby-Shell (irb) ausfuehren laesst, heraus gekommen:
Dir["*.mp3"].each { |file| File.rename(file, file.gsub(/%20/, "_")) }
Hier wird einfach bei jeder *.mp3 Datei im Verzeichnis das %20 im Dateinamen durch einen Unterstrich ersetzt.
Also Ruby ist ja eine sehr schöne Sprache, aber man muss sie nicht auf biegen und brechen für alles einsetzen.
In deisem Fall hätte es bspw. ein Simples rename %20 " " *.mp3 auch getan. ![]()
Ja wie gesagt: Normalerweise setze ich fuer sowas zvm ein, dass ja sowieso Bestandteil der zsh ist.
Allerdings wollte ich das mal in Ruby ausprobieren um die Sprache besser kennen zu lernen.
Zudem ist mir gerade aufgefallen, dass rename nur das erste vorkommende %20 ersetzt. Die Manpage sagt dazu:
rename will rename the specified files by replacing the first occurrence of from in their name by to.
#!/bin/sh
for i in %20
do
mv "$i" "$(echo $i | sed -e s/'%20'/' '/g)"
done
@ths: MIr ist auch bekannt wie man sowas als Shellscript macht
![]()
Calendar
| « | February '12 | » | ||||
| Mo | Tu | We | Th | Fr | Sa | Su |
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | ||||


