复制从一个目录复制到另一个文件中使用Ruby

问题描述:

嘿,我想从一个文件夹移动多个文件到另一个。在FileUtils行中,我试图搜索目标文件夹中的所有4个字符文件夹,然后将该文件粘贴到与文件具有相同基本名称的文件夹中。复制从一个目录复制到另一个文件中使用Ruby

#!/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 
+1

@ KL-7,它被认为是不好的形式来修改别人的源代码。请使用注释来识别问题,例如您更改过的'#!'行。 – 2012-03-01 16:21:38

+4

@theTinMan,我不认为这是一个坏主意,以帮助正确的代码缩进新用户。关于shebang,我认为这只是一个错字。 – 2012-03-01 16:26:27

这样的事情应该工作。

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 

你必须实际指定目标文件夹,我不认为你可以使用通配符。

+0

你应该不使用任何字符的任何nymber变量名“DEST_FOLDER”,我复制了剧本不看它,它没有工作,因为我认为这应该是一个文件夹..难道是我的错,但..;) – 2014-05-14 15:32:12

*是一个通配符,意思是“任意字符数”,所以“****”是指“任何数量的任何数量的任何数量的任何数目的字符的”,这可能不是你的意思。

?是“此位置中的任何字符”的正确符号,所以“????”表示“仅包含四个字符的字符串”。

+0

在壳图案匹配,实际上''****是指任何数目的任何字符,随后是任何数量的任意字符,随后的任何字符的任何nymber,随后的 – akostadinov 2017-08-16 09:28:18