Ruby on Rails: как переместить все файлы из одной папки в другую? - PullRequest
4 голосов
/ 20 июля 2010

Но мне также нужен способ переименовать их, если есть конфликты.

Как if exists? then file.name = "1-"+file.name или что-то в этом роде

Ответы [ 2 ]

6 голосов
/ 20 июля 2010

Может быть, что-то вроде этого работает для вас:

origin = '/test_dir'
destination = '/another_test_dir'

Dir.glob(File.join(origin, '*')).each do |file|
  if File.exists? File.join(destination, File.basename(file))
    FileUtils.move file, File.join(destination, "1-#{File.basename(file)}")
  else
    FileUtils.move file, File.join(destination, File.basename(file))
  end
end

С уважением.

3 голосов
/ 08 мая 2011

Вышеупомянутый код работает, но с небольшой ошибкой. Вы используете if File.exists?(file), который проверяет, находится ли файл в исходной папке / или подпапке (который бесполезен, поскольку он был прочитан, поскольку он уже существует).Вам необходимо проверить, существует ли файл в папке назначения.Из-за этого синтаксиса «else» никогда не выполняется.И все файлы названы как «1-имя файла».Правильно было бы использовать

if File.exists? File.join(destination, File.basename(file))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...