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


