7

考虑一下,我们有以下目录结构:

Location:
/Users/me/Desktop/directory_to_zip/
dir1 dir2 somefile.txt

现在,如果我使用ruby ​​zip 压缩directory_to_zip使用以下代码的内容:

directory = '/Users/me/Desktop/directory_to_zip/'
zipfile_name = '/Users/me/Desktop/recursive_directory.zip'

Zip::File.open(zipfile_name, Zip::File::CREATE) do |zipfile|
    Dir[File.join(directory, '**', '**')].each do |file|
      zipfile.add(file.sub(directory, ''), file)
    end
end

这将创建一个名为 的 zip 文件recursive_directory.zip,其中将包含一个名为directory_to_zip&的容器目录directory_to_zip,我会找到我的文件吗( dir1 dir2 somefile.txt)

如何跳过directory_to_zipinsiderecursive_directory.zip的创建,以便 zip 文件只包含directory_to_zip& 而不是目录本身的内容。

4

1 回答 1

7

好的,我自己解决了这个问题。如果你在同一条船上,这里是我是如何做到的:

Zip::File.open(zipfile_name, Zip::File::CREATE) do |zipfile|
  Dir.chdir directory
  Dir.glob("**/*").reject {|fn| File.directory?(fn) }.each do |file|
    puts "Adding #{file}"
    zipfile.add(file.sub(directory + '/', ''), file)
  end
end

这正是我想要的。这里的限制是它不处理空目录。希望它会帮助某人。

于 2014-02-03T12:15:17.860 回答