web-dev-qa-db-ja.com

Rubyを使用して、あるディレクトリから別のディレクトリにファイルをコピーする

ちょっと私は1つのフォルダーから別のフォルダーに複数のファイルを移動しようとしています。 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
25
1dolinski

このような何かが動作するはずです。

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

実際に宛先フォルダを指定する必要があります。ワイルドカードを使用できるとは思いません。

45
David Grayson

*は「任意の数の文字」を意味するワイルドカードなので、「**** "は、「任意の数の任意の数の任意の数の任意の数の文字」を意味します。

?は「この位置の任意の文字」の適切なシンボルです。したがって、「???? "は、「4文字のみの文字列」を意味します。

4
the Tin Man