Копирование файла из одного каталога в другой с помощью Ruby - PullRequest
22 голосов
/ 01 марта 2012

Эй, я пытаюсь переместить несколько файлов из одной папки в другую.В строке FileUtils я пытаюсь найти все 4-символьные папки в папке назначения, а затем вставить файл в папку с тем же базовым именем, что и файл.

#!/usr/bin/env ruby

require 'fileutils'

my_dir = Dir["C:/Documents and Settings/user/Desktop/originalfiles/*.doc"]
my_dir.each do |filename| 
  FileUtils.cp(filename, "C:/Documents and Settings/user/Desktop/destinationfolder/****/" + File.basename(filename, ".doc"))
end

Ответы [ 2 ]

42 голосов
/ 01 марта 2012

Как-то так должно работать.

my_dir = Dir["C:/Documents and Settings/user/Desktop/originalfiles/*.doc"]
my_dir.each do |filename|
  name = File.basename('filename', '.doc')[0,4]
  dest_folder = "C:/Documents and Settings/user/Desktop/destinationfolder/#{name}/"
  FileUtils.cp(filename, dest_folder)
end

Вы должны указать папку назначения, я не думаю, что вы можете использовать подстановочные знаки.

4 голосов
/ 01 марта 2012

* - это подстановочный знак, означающий «любое количество символов», поэтому «****» означает «любое число, любое число, любое количество символов», что, вероятно, не то, что вы имеете в виду.

? является подходящим символом для «любого символа в этой позиции», поэтому «????» означает «только строка из четырех символов».

...