嘿我正在尝试将多个文件从一个文件夹移动到另一个文件夹。在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
答案 0 :(得分:39)
这样的事情应该有效。
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
您必须实际指定目标文件夹,我认为您不能使用通配符。
答案 1 :(得分:4)
*
是一个通配符,意思是“任意数量的字符”,因此“****
”表示“任意数量的任意数量的任意数量的任意数量的字符”,这可能不是你的意思的意思。
?
是“此位置中的任何角色”的正确符号,因此“????
”表示“仅包含四个字符的字符串”。
答案 2 :(得分:2)
我必须每3个文件中的1个从多个目录复制到另一个目录。对于那些想知道的人,这是我的方法:
# frozen_string_literal: true
require 'fileutils'
# Print origin folder question
puts 'Please select origin folder'
# Select origin folder
origin_folder = gets.chomp
# Select every file inside origin folder with .png extension
origin_folder = Dir["#{origin_folder}/*png"]
# Print destination folder question
puts 'Please select destination folder'
# Select destination folder
destination_folder = gets.chomp
# Select 1 every 3 files in origin folder
(0..origin_folder.length).step(3).each do |index|
# Copy files
FileUtils.cp(origin_folder[index], destination_folder)
end