He estado intentando resolver un programa de cambio de nombre basado en ruby, como un ejercicio de programación para mí (estoy al tanto del cambio de nombre en Linux, pero quiero aprender Ruby y cambiar el nombre es no disponible en Mac).Cómo cambiar el nombre de los archivos en ruby en masa
En el código siguiente, el problema es que el método .include?
siempre devuelve falso aunque veo que el nombre de archivo contiene dicho patrón de búsqueda. Si hago un comentario sobre la verificación include?
, gsub()
no parece generar un nuevo nombre de archivo (es decir, el nombre del archivo sigue siendo el mismo). Entonces, ¿alguien puede ver lo que hice mal? ¡Muchas gracias de antemano!
Aquí es el comportamiento esperado: Suponiendo que en la carpeta actual hay tres archivos: a1.jpg, a2.jpg y a3.jpg El script de Ruby debe ser capaz de cambiar su nombre a B1.jpg, b2. jpg, b3.jpg
#!/Users/Antony/.rvm/rubies/ruby-1.9.3-p194/bin/ruby
puts "Enter the file search query"
searchPattern = gets
puts "Enter the target to replace"
target = gets
puts "Enter the new target name"
newTarget = gets
Dir.glob("./*").sort.each do |entry|
origin = File.basename(entry, File.extname(entry))
if origin.include?(searchPattern)
newEntry = origin.gsub(target, newTarget)
File.rename(origin, newEntry)
puts "Rename from " + origin + " to " + newEntry
end
end
Lo que de entrada le están proporcionando a las tres indicaciones 'gets'? – bta
Creo seriamente que el comando 'rename' puede hacer mejor en eso ... – texasbruce
@texasbruce, no hay ningún comando de cambio de nombre en mac. tal vez macports tiene algo, pero solo encontró un montón de scripts Perl. Pero como sugerí antes, es un ejercicio de rubí para mí – Antony