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