web-dev-qa-db-fra.com

Copie d'un fichier d'un répertoire à un autre avec Ruby

Hé, j'essaye de déplacer plusieurs fichiers d'un dossier à un autre. Dans la ligne FileUtils, j'essaie de rechercher dans tous les dossiers de 4 caractères du dossier de destination, puis de coller le fichier dans le dossier avec le même nom de base que le fichier.

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

Quelque chose comme ça devrait fonctionner.

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

Vous devez en fait spécifier le dossier de destination, je ne pense pas que vous puissiez utiliser des caractères génériques.

45
David Grayson

* est un caractère générique qui signifie "n'importe quel nombre de caractères", donc "**** "signifie" n'importe quel nombre de n'importe quel nombre de n'importe quel nombre de n'importe quel nombre de caractères ", ce qui n'est probablement pas ce que vous voulez dire.

? est le symbole approprié pour "n'importe quel caractère à cette position", donc "???? "signifie" une chaîne de quatre caractères seulement ".

4
the Tin Man