如何使用Ruby解压缩.tgz文件

时间:2014-01-16 20:49:47

标签: ruby linux

我需要的是解压缩/解压缩以.tgz

结尾的随机文件名

当我使用irb(通过命令行解释ruby)时,此命令可以正常工作

`tar xzf *.tgz`

只要我在相应的目录

但是,这在ruby脚本中不起作用。我使用

更改目录
puts Dir.pwd
Dir.chdir("unprocessed/") do
   puts Dir.pwd
end
`tar xzf *.tgz`

这使我进入未处理的子目录,然后我尝试运行上面的tar命令。 然而它给了我这个错误,但同样在irb中也可以。

tar (child): *.tgz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now

我需要的是解压缩/解压缩以.tgz结尾的随机文件名 然后我将阅读其中的内容。

编辑---- 在接受的答案的帮助下,我最终使用了

Dir.chdir("unprocessed/") do
    puts Dir.pwd
    `tar xzf #{Dir.pwd}/*.tgz`
end

1 个答案:

答案 0 :(得分:2)

反引号唤起了一个对Dir.pwd一无所知的新shell,所以你想要的是这样的:

Dir.chdir("unprocessed/") do
   `tar xzf #{Dir.pwd}*.tgz`
end

Dir.chdir("unprocessed/")
`tar xzf #{Dir.pwd}*.tgz`