2012-03-01 12 views
15

Hola, estoy tratando de mover varios archivos de una carpeta a otra. En la línea de FileUtils, intento buscar en todas las carpetas de 4 caracteres en la carpeta de destino y luego pegar el archivo en la carpeta con el mismo nombre base que el archivo.Copiando un archivo de un directorio a otro con 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, se considera una forma incorrecta de modificar el código fuente de las personas. Utilice un comentario para identificar problemas, como la línea '#!' Que ha cambiado. –

+4

@theTinMan, no creo que sea una mala idea ayudar al nuevo usuario con la indención de código adecuada. En cuanto a shebang, pensé que era solo un error tipográfico. –

Respuesta

31

Algo como esto debería funcionar.

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 

Tiene que especificar realmente la carpeta de destino, no creo que pueda usar comodines.

+0

No debe utilizar el nombre de la variable "dest_folder", copié el script sin mirarlo y no funcionó porque pensé que debería ser una carpeta. Aunque podría ser mi culpa ...;) –

4

* es un comodín que significa "cualquier número de caracteres", por lo que "****" significa "cualquier número de cualquier número de cualquier número de cualquier número de caracteres", lo que probablemente no es lo que quiere decir.

? es el símbolo adecuado para "cualquier carácter en esta posición", por lo que "????" significa "una cadena de cuatro caracteres solamente".

+0

En la coincidencia de patrón de shell, en realidad '****' significa cualquier número de caracteres seguido de cualquier número de caracteres, seguido de cualquier número de caracteres, seguido de cualquier número de caracteres – akostadinov

Cuestiones relacionadas