Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何使用哈希中的字符串值重命名文件名?_Ruby - Fatal编程技术网

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(?)}