Ruby and bash unzip - ошибка переименования файлов - PullRequest
0 голосов
/ 28 января 2012

Проблема.У меня есть x количество файлов zip, в каждом из которых n файлов аудио.Каждый аудиофайл имеет одно и то же имя, поэтому, когда я делаю распаковку дампа, мне приходится переименовывать файлы в терминале.Мой план состоит в том, чтобы циклически загружать zip-файлы и извлекать и переименовывать для каждого аудиофайла.Ошибка появляется, когда я пытаюсь переименовать извлеченный файл - хотя я вижу его в папке.

Где я иду не так?

script_dir = File.expand_path File.dirname(__FILE__)
Dir.chdir(script_dir)


Dir.glob('*.pencast').each do |pencast|

    i = 1

    `unzip -l #{pencast} | grep .aac | awk '{print $4;}'`.each do |zipped_audio|

    pencast_title = File.basename(File.basename(pencast), '.*')
    audio_title = File.basename(zipped_audio)
    audio_extension = File.extname(File.basename(zipped_audio))
    renamed = "#{pencast_title}-#{i}#{audio_extension}"

    `unzip -j #{pencast} #{audio_title}`
    File.rename(audio_title, renamed)

    i += 1          
    end
end

Вывод:

prog2.rb:20:in `rename': No such file or directory - audio-0.aac (Errno::ENOENT)
 or Cancer1-1-1.aac
    from prog2.rb:20
    from prog2.rb:11:in `each'
    from prog2.rb:11
    from prog2.rb:7:in `each'
    from prog2.rb:7

Я могу найти файлы, я могу разархивировать нужные файлы, но это не такМне не нравится пытаться переименовать их.

Я думаю, что моя проблема, возможно, в том, что unzip -l #{pencast} | grep .aac | awk '{print $4;}' находит 2 файла.Я добавлю | awk 'NR==1' и посмотрю, смогу ли я куда-нибудь добраться

...