Как переименовать файл в Ruby?
Вот мой файл.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."
Файлы перемещаются из исходного каталога в каталог, где находится файл.rb. Я хотел бы переименовать файлы на месте, не перемещая их.
Любые предложения о том, что делать?
5 ответов
Как насчет просто:
File.rename(f, folder_path + "/" + filename.capitalize + File.extname(f))
Разве folder_path не должен быть частью имени файла?
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."
редактировать: кажется, Мэт дает тот же ответ, что и я, только немного по-другому.
Если вы работаете в том же месте, что и файл, который вы хотите изменить
File.rename("test.txt", "hope.txt")
Хотя, честно говоря, иногда я вообще не вижу смысла в использовании ruby ... нет необходимости, вероятно, до тех пор, пока ваши имена файлов просто интерпретируются в оболочке:
`mv test.txt hope.txt`
Если вы находитесь в файловой системе Linux, вы можете попробовать mv #{filename} newname
Вы также можете использовать File.rename(старый, новый)
Не используйте этот шаблон, если вы не готовы поставить правильные кавычки вокруг имен файлов:
`mv test.txt hope.txt`
Действительно, предположим, что вместо "hope.txt" у вас есть файл с именем "foo the bar.txt", результат будет не таким, как вы ожидаете.