我将如何以Ruby-esque方式遍历此集合

时间:2011-04-03 14:40:07

标签: ruby iteration

puts "Renaming files..."

folder_path = "/home/papuccino1/Desktop/Test"
files = Dir.glob(folder_path + "/*").sort
extension = File.extname(files[0])
puts File.basename(files[0], extension)

puts "Renaming complete."

我的最终目标:抓取文件夹中的每个文件名,并将文件重命名为Title Case:

input:                       output:
test.txt                     Text.txt
this is just a test.doc      This Is Just A Test.doc
The Final test is near.xls   The Final Test Is Near.xls

我如何遍历'文件'中的每个项目?

谢谢! :)

3 个答案:

答案 0 :(得分:1)

只是为了展示如何以rubyish方式遍历文件:

Dir.glob(folder_path + "/*").sort.each do |f|
  # do something like:
  puts File.basename(f, File.extname(f))
end

请注意,您可以使用每个地图方法。两者之间的区别在于每个都返回初始集合,而map返回修改后的集合。

答案 1 :(得分:1)

一种典型的方法是使用each

files.each do |file|
  p file
end

首先查看文件名,然后添加重命名方法。

答案 2 :(得分:-1)

Dir.glob( File.join(".","*") ).select{|x| test(?f,x)}.sort.each | path |
   puts File.basename(x,File.extname(x)).split("\s").map(&:capitalize).join("\s") 
end