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 initial vers l'emplacement du fichier .rb. Je voudrais renommer les fichiers sur place, sans les déplacer.
Des suggestions sur quoi faire?
Qu'en est-il simplement:
File.rename(f, folder_path + "/" + filename.capitalize + File.extname(f))
Folder_path ne doit-il pas obligatoirement 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, mais d'une manière légèrement différente.
Si vous utilisez le même emplacement que le fichier que vous souhaitez modifier
File.rename("test.txt", "hope.txt")
Honnêtement, honnêtement, je ne vois parfois pas l'intérêt d'utiliser Ruby du tout… inutile sans doute tant que vos noms de fichiers sont simplement interprétés dans Shell
`mv test.txt hope.txt`
Si vous êtes sur un système de fichiers Linux, vous pouvez essayer mv #{filename} newname
Vous pouvez également utiliser File.rename (ancien, nouveau)
Bonjour, j'ai créé une classe Ruby qui itère des répertoires et renomme récursivement les fichiers à partir de celui-ci et de leurs enfants.
N'utilisez pas ce modèle à moins que vous ne soyez prêt à mettre des citations appropriées autour des noms de fichiers:
`mv test.txt hope.txt`
En effet, supposons qu'au lieu de "hope.txt" vous ayez un fichier appelé "foo the bar.txt", le résultat ne sera pas celui que vous attendez.