我将如何以Ruby风格的方式迭代这个集合

我将如何以Ruby风格的方式迭代这个集合,ruby,iteration,Ruby,Iteration,我的最终目标:获取文件夹中的每个文件名,并将文件重命名为Title Case: 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 compl

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

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."
如何遍历“文件”中的每个项目


谢谢!:)

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

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

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

一种典型的方法是使用
每个

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

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

@Jakub:see@Jakub:I只是在做OP想要做的事情。为什么?在编辑之前,您正在使用
.sort
进行迭代。这不是正确的方法。编辑后就可以了。@Jacub:啊,是的,当然我忘了在编辑之前应用每个(..)
。选择
,这并不完全有效。@Jakub。那么你有什么建议?在每个循环中进行测试。有什么基准吗?如果你能说服我,我可能会改变答案。收益率:`user system total real select 0.550000 0.0000000.550000(0.550148)no select 0.460000 0.0000000.460000(0.460014)``
files.each do |file|
  p file
end
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