试图在Mac OS上使用Dir和File.rename更改文件名?

时间:2014-03-30 00:16:17

标签: ruby macos

我正在关注教程,并且正在尝试更改位于' drive / users / myname / test'下的文件夹中的三个文件的名称。我收到了错误:

'chdir': No such file or directory - test'. 

起始路径已经是&drive; users / myname',这就是为什么我认为我只需要输入' test' Dir.chdir

如何在Mac OS上正确输入路径?

Dir.chdir('test')

pic_names = Dir['test.{JPG,jpg}']

puts "What do you want to call this batch"
batch_name = gets.chomp
puts
print "Downloading #{pic_names.length} files:  "


pic_number = 1
pic_names.each do |p|
  print '.'
  new_name = "batch_name#{pic_number}.jpg"

  File.rename(name, new_name)
  pic_number += 1
end

2 个答案:

答案 0 :(得分:1)

我认为你必须提供绝对路径。所以,你的第一行应该是:

Dir.chdir("/drive/users/myname/test") 

根据文件:

Dir.chdir("/var/spool/mail") 
puts Dir.pwd

应输出/var/spool/mail

您可以查看documentation了解更多示例。

答案 1 :(得分:0)

在:

File.rename(name, new_name)

name在尝试使用之前从未定义过。

或许p应为name,或name应为p

根据这个假设,我可以写出类似的循环:

pic_names.each_with_index do |name, pic_number|
  print '.'
  new_name = "#{ batch_name }#{ 1 + pic_number }.jpg"

  File.rename(name, File.join(File.dirname(name), new_name))
end

File.join(File.dirname(name), new_name)很重要。您必须在原始文件名和新文件名中引用相同的路径,否则文件将被移动到新位置,该位置将是当前工作目录指向的位置。目前您在使用chdir时屏蔽了这一点,但是,如果没有这个,您就不知道文件的去向。