Comment renommer un fichier dans Ruby?
Voici mon .fichier 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."
Les fichiers sont déplacés de leur répertoire où l' .fichier rb est situé. Je voudrais renommer les fichiers sur place, sans bouger.
Des suggestions sur ce qu'il faut faire?
5 réponses
Qu'en est-il simplement:
File.rename(f, folder_path + "/" + filename.capitalize + File.extname(f))
Le folder_path ne doit-il pas faire partie du nom de fichier?
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."
Edit: il semble que Mat donne la même réponse que moi, seulement d'une manière légèrement différente.
Si vous exécutez dans le même emplacement que le fichier que vous souhaitez modifier
File.rename("test.txt", "hope.txt")
Bien que honnêtement, je ne vois parfois pas l'intérêt d'utiliser ruby à all...no besoin probablement tant que vos noms de fichiers sont simplement interprétés dans le shell:
`mv test.txt hope.txt`
Si vous êtes sur un système de fichiers linux vous pouvez essayer de mv #{filename} newname
Vous pouvez également utiliser File.renommer(ancien,nouveau)
N'utilisez pas ce modèle sauf si vous êtes prêt à mettre des guillemets appropriés autour des noms de fichiers:
`mv test.txt hope.txt`
En effet, supposons au lieu de " espoir.txt "vous avez un fichier appelé" foo la barre.txt", le résultat ne sera pas ce que vous attendez.