Я пытался разработать программу переименования файлов на основе ruby, как упражнение для программирования для себя (мне известно о переименовании под Linux, но я хочу узнать Ruby и переименовать недоступен в Mac).Как массовое переименование файлов в ruby
Из приведенного ниже кода проблема заключается в том, что метод .include?
всегда возвращает значение false, хотя я вижу, что имя файла содержит такой шаблон поиска. Если я прокомментирую проверку include?
, gsub()
, похоже, вообще не генерирует новое имя файла (то есть имя файла остается неизменным). Так может кто-нибудь, пожалуйста, посмотрите, что я сделал неправильно? Спасибо за кучу заранее!
Вот ожидаемое поведение: Предполагая, что в текущей папке есть три файла: a1.JPG, A2.jpg и a3.jpg Сценарий рубин должен быть в состоянии переименовать его в B1.jpg, b2. JPG, b3.jpg
#!/Users/Antony/.rvm/rubies/ruby-1.9.3-p194/bin/ruby
puts "Enter the file search query"
searchPattern = gets
puts "Enter the target to replace"
target = gets
puts "Enter the new target name"
newTarget = gets
Dir.glob("./*").sort.each do |entry|
origin = File.basename(entry, File.extname(entry))
if origin.include?(searchPattern)
newEntry = origin.gsub(target, newTarget)
File.rename(origin, newEntry)
puts "Rename from " + origin + " to " + newEntry
end
end
Какой вклад вы обеспечение для трех 'gets' подсказками? – bta
Я серьезно думаю, что команда 'rename' может сделать лучше в этом ... – texasbruce
@texasbruce, в mac нет команды rename. возможно, у macports есть что-то, но только нашел кучу perl-скриптов. Но, как я уже говорил ранее, это упражнение для рубинов для меня – Antony