Ruby 如何使用哈希中的字符串值重命名文件名?
我有一个包含文件的目录:Ruby 如何使用哈希中的字符串值重命名文件名?,ruby,Ruby,我有一个包含文件的目录: folder/ -spider.rb -elephant.rb -monkey.rb 我还有散列,包含这样的对 rename_filenames = { "spider" => "bear", "elephant" => "rat", "monkey" => "tiger" } 如何使用散列中的值重命名文件 folder/ -bear.rb -rat.rb -tiger.rb 您可以简单地迭代哈希并相应地重命名:
folder/
-spider.rb
-elephant.rb
-monkey.rb
我还有散列,包含这样的对
rename_filenames =
{ "spider" => "bear",
"elephant" => "rat",
"monkey" => "tiger" }
如何使用散列中的值重命名文件
folder/
-bear.rb
-rat.rb
-tiger.rb
您可以简单地迭代哈希并相应地重命名:
rename_filenames.each do |old_name, new_name|
File.rename("folder/#{old_name}.rb", "folder/#{new_name}.rb")
end
您可以简单地迭代哈希并相应地重命名:
rename_filenames.each do |old_name, new_name|
File.rename("folder/#{old_name}.rb", "folder/#{new_name}.rb")
end
答案很好,实际上完美地解决了问题。然而,我担心,如果文件名可能包含除完全匹配之外的其他符号,该怎么办?在这种情况下,我必须使用完全不同的方法。
什么是文件名包含其他符号
。。。你在说什么?地球仪?正则表达式。。。?想象一下,如果文件名为5643_spider.rb、3232_elephant.rb
等@AlexanderShmatko,那么您需要迭代目录中的每个文件并进行模式匹配。同意,您是对的。但是我如何从散列中提取密钥来进行模式匹配呢Dir.glob('folder','**.rb'){| f | f.match(?)}
答案很好,实际上完美地解决了问题。然而,我担心,如果文件名可能包含除完全匹配之外的其他符号,该怎么办?在这种情况下,我必须使用完全不同的方法。什么是文件名包含其他符号
。。。你在说什么?地球仪?正则表达式。。。?想象一下,如果文件名为5643_spider.rb、3232_elephant.rb
等@AlexanderShmatko,那么您需要迭代目录中的每个文件并进行模式匹配。同意,您是对的。但是我如何从散列中提取密钥来进行模式匹配呢<代码>目录全局('folder','**.rb'){| f | f.match(?)}