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

问题描述 投票:28回答:3

嘿,我试图将多个文件从一个文件夹移动到另一个文件夹。在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
ruby dir
3个回答
52
投票

像这样的东西应该可以。

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

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


3
投票

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

? 是 "这个位置的任何字符 "的正确符号,所以"????"的意思是 "只有四个字符的字符串"。


1
投票

我必须把每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
© www.soinside.com 2019 - 2024. All rights reserved.