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?

47
demandé sur Mat 2011-04-03 19:21:25

5 réponses

Qu'en est-il simplement:

File.rename(f, folder_path + "/" + filename.capitalize + File.extname(f))
82
répondu Mat 2011-04-03 15:29:32

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.

22
répondu Preacher 2011-04-03 15:30:57

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`
14
répondu boulder_ruby 2016-10-24 02:40:59

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)

2
répondu Steve 2011-04-03 15:33:15

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.

0
répondu Nicola Mingotti 2018-02-14 11:47:22