Hallo zusammen,

ich habe mir gerade ein kleines Ruby-Skript gebastelt, welches Files (und Unterverzeichnisse) im lokalen Arbeitsverzeichnis umbenennt, die Sonderzeichen (vor allem Leerzeichen) enthalten. Vielleicht kann's ja jemand gebrauchen:

Code:
#!/usr/bin/ruby

basedir = '.'
files = Dir.glob("*")  # erzeuge file liste


puts "\nChecke lokales Verzeichnis....\n\n"

files.each do |file|

  name = File.basename(file, ".*")
  ext = File.extname(file)

# Hash mit den zu ersetzenden Sonderzeichen
  ersetzungen = { /;/ => "-",
                   /\s/ => "_",
                   /\'\`/ => "=",
                   /\&/ => "_und_",
                   /\$/ => "_dollar_",
                   /%/ => "_prozent_",
                   /§/ => "_parag_",
                   /[\(\)\[\]<>]/ => ""
  }  

  tempfile = file.dup		# erstelle Duplikat von Variable "file"

  ersetzungen.each do |orig, fix|
    name.gsub!(orig,fix)		# dies aendert die Variable "file" !!!
  end

  # File(s) umbenennen
  File.rename(tempfile, name + ext)

 # Kleiner Report: was wurde getan?
  if tempfile != name + ext 
	puts "Umbenannt: #{tempfile} ---> #{name + ext} \n"
  end
end

puts "\n.......fertig.\n\n"

PS: Das Skript benennt die Files rigoros um bzw. überschreibt eventuell schon vorher umbenannte Files!!

Beispiel:
Code:
Honolulu temp # ll
total 20
 0 drwxr-xr-x   2 root root   112 2009-06-25 13:29 .
20 drwxr-xr-x 108 root root 20736 2009-06-25 13:29 ..
 0 -rw-r--r--   1 root root     0 2009-06-25 13:29 abc%efg.doc
 0 -rw-r--r--   1 root root     0 2009-06-25 13:29 hallo du.txt
Honolulu temp # fixmyFiles.rb 

Checke lokales Verzeichnis....

Umbenannt: hallo du.txt ---> hallo_du.txt 
Umbenannt: abc%efg.doc ---> abc_percent_efg.doc 

.......fertig.

Honolulu temp # ll
total 20
 0 drwxr-xr-x   2 root root   120 2009-06-25 13:30 .
20 drwxr-xr-x 108 root root 20736 2009-06-25 13:29 ..
 0 -rw-r--r--   1 root root     0 2009-06-25 13:29 abc_percent_efg.doc
 0 -rw-r--r--   1 root root     0 2009-06-25 13:29 hallo_du.txt