Ruby和bash解压-重命名文件时出错

Ruby和bash解压-重命名文件时出错,ruby,bash,rename,unzip,file-rename,Ruby,Bash,Rename,Unzip,File Rename,问题。我有x个压缩文件,每个有n个音频文件。每个音频文件都有相同的名称,所以当我进行转储解压缩时,我必须重命名终端中的文件。我的计划是循环浏览zip文件,并为每个音频文件提取并重命名它。当我尝试重命名已提取的文件时,会出现错误,即使我可以在文件夹中看到它 我哪里做错了 script_dir = File.expand_path File.dirname(__FILE__) Dir.chdir(script_dir) Dir.glob('*.pencast').each do |pencast

问题。我有x个压缩文件,每个有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'
,看看我是否能到达某处

你能发布
解压-l{pencast}
的输出,并在该命令之后列出目录吗我想我知道问题出在哪里了。。。如何对变量使用
File.rename(“text1.txt”、“text2.txt”)
?ie
var1=“text1.txt”
var2=“text2.txt”
文件。重命名(var1,var2)
就可以了。如果这是一个问题,你需要为自己准备一本像样的Ruby参考手册。@tadman,出于某种原因,它没有-我不明白你为什么要用bash做任何事情;为什么不使用Ruby来查找
.aac
文件???这是胡说八道。