Alle 21:12, domenica 26 novembre 2006, Li Chen ha scritto: > Hi all, > > I have a folder containing many files with format > LIPID5-2.001 > LIPID5-2.002 > ... > LIPID5-2.200 > > I want to change all of them into > LIPID5-3.001 > LIPID5-3.002 > ... > LIPID5-3.200 > > I write a script as follows. Based on the screen output the filename is > changed. But I go to the same folder and find the original file > LIPID5-2.001 is still there and there is no file called LIPID5-3.001. > Any comments? > > Thanks, > > Li > > ## > path='C:\Ruby\self' > > Dir.entries(path).each do |filename| > > if filename=~/(LIPID5-2)(\.\w+)/i > p filename.gsub!(/LIPID5-2/,'LIPID5-3') > end > > end > > ##output > > >ruby dir9.rb > > "LIPID5-3.001" > > >Exit code: 0 filename is only a ruby string, it has no relationship with your filesystem. If you want to change the name of a file, you should use the File.rename method: Dir.entries(path).each do |filename| if filename=~/(LIPID5-2)(\.\w+)/i File.rename(filename, filename.gsub(/LIPID5-2/,'LIPID5-3')) end end Stefano