web-dev-qa-db-fra.com

Comment renommer un fichier en 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 initial vers l'emplacement du fichier .rb. Je voudrais renommer les fichiers sur place, sans les déplacer.

Des suggestions sur quoi faire?

50
delete

Qu'en est-il simplement:

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

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.

24
Preacher

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`
15
boulder_ruby

Si vous êtes sur un système de fichiers Linux, vous pouvez essayer mv #{filename} newname

Vous pouvez également utiliser File.rename (ancien, nouveau) 

2
Steve

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.

https://github.com/halleyrv/rename-files

0
HalleyRios

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.

0
Nicola Mingotti