Por ejemplo, en Una carpeta, he foo.jpg y bar.jpg. En la carpeta B, tengo foo.png y foobar.png. Sólo necesito una versión del archivo, independientemente de la extensión, así que lo único que desea mover foobar.png a la carpeta A. ¿Cómo puedo hacer esto? Este es un simple ejemplo, hay casi 2.000 archivos en la carpeta B, por lo que comparar de forma manual sería muy tedioso.
Respuesta
¿Demasiados anuncios?
ganbustein
Puntos
1016
Guardar los siguientes como un archivo de texto y hacerlo ejecutable. Invocar desde la línea de comandos, de paso en las rutas de acceso a Una carpeta y la carpeta B.
#!/usr/bin/ruby
if ARGV.size != 2
STDERR.print "#Usage: #{$0} source/folder destination/folder\n"
exit 1
end
a = ARGV[0].chomp("/")
b = ARGV[1].chomp("/")
old_bases = Hash.new
Dir.foreach(b) do |f|
next if f =~ /^\./
old_bases[f.sub(/\.[^.]*$/, "").downcase] = true
end
Dir.foreach(a) do |f|
next if f =~ /^\./
fbase = f.sub(/.[^.]*$/, "").downcase
unless old_bases[fbase]
File.rename( "#{a}/#{f}", "#{b}/#{f}" )
old_bases[fbase] = true
end
end
Script editado para comprobar el número de argumentos, y corregir un error en el Archivo.cambiar el nombre de
Editado de nuevo a ignorar caso. Es decir, no mueva la Barra.si png bar.jpg ya existe.