manipulacion clases arreglos archivos ruby file dir

clases - ¿Cómo cambiar el nombre de un archivo en Ruby?



file ruby (5)

Aquí está mi archivo .rb:

puts "Renaming files..." folder_path = "/home/papuccino1/Desktop/Test" Dir.glob(folder_path + "/*").sort.each do |f| filename = File.basename(f, File.extname(f)) File.rename(f, filename.capitalize + File.extname(f)) end puts "Renaming complete."

Los archivos se mueven desde su directorio inicial hasta donde se encuentra el archivo .rb. Me gustaría cambiar el nombre de los archivos en el momento, sin moverlos.

¿Alguna sugerencia sobre qué hacer?


¿El folder_path no tiene que ser parte del nombre del archivo?

puts "Renaming files..." folder_path = "/home/papuccino1/Desktop/Test/" Dir.glob(folder_path + "*").sort.each do |f| filename = File.basename(f, File.extname(f)) File.rename(f, folder_path + filename.capitalize + File.extname(f)) end puts "Renaming complete."

editar: parece que Mat está dando la misma respuesta que yo, solo que de una manera ligeramente diferente.


¿Qué tal simplemente?

File.rename(f, folder_path + "/" + filename.capitalize + File.extname(f))


No use este patrón a menos que esté listo para poner las citas adecuadas alrededor de los nombres de archivo:

`mv test.txt hope.txt`

De hecho, suponga que en lugar de "hope.txt" tiene un archivo llamado "foo the bar.txt", el resultado no será el esperado.


Si está ejecutando en la misma ubicación que el archivo que desea cambiar

File.rename("test.txt", "hope.txt")

Aunque, sinceramente, a veces no veo el sentido de usar rubí en absoluto ... no es necesario, siempre y cuando tus nombres de archivo simplemente se interpreten en el intérprete de comandos:

`mv test.txt hope.txt`


Si está en un sistema de archivos de Linux, puede probar mv #{filename} newname

También puede usar File.rename (antiguo, nuevo)