这个例子构建在第一个例子(http://www.iteye.com/topic/524316)的基础上,但是需要将搜索到的文件打包到zip文件中。
内建的zlib模块可帮助处理gzip文件,对于大多数情况它都够好。在这里我将使用另一个很好的Ruby库,即“rubyzip”,来创建和处理zip归档文件。
安装rubyzip
gem install rubyzip
require 'find'
require 'zip/zip'
puts ""
puts "------------------File Search and Zip-----------------------------"
puts ""
print "Enter the search path : "
searchpath = gets
searchpath = searchpath.chomp
puts ""
print "Enter the search pattern : "
pattern = gets
pattern = pattern.chomp
puts"----------------------------------------------------------------------"
puts "Searching in " + searchpath + " for files matching pattern " + pattern
puts"----------------------------------------------------------------------"
puts ""
puts"----------------------------------------------------------------------"
puts "Zipping up the found files..."
puts"----------------------------------------------------------------------"
Zip::ZipFile.open("test.zip", Zip::ZipFile::CREATE) {|zipfile|
Find.find(searchpath) do |path|
if FileTest.directory?(path)
if File.basename(path)[0] == ?.
Find.prune
else
next
end
else
if File.fnmatch(pattern, File.basename(path))
puts File.basename(path)
zipfile.add(File.basename(path), path) #将符合的文件添加到zip归档中
end
end
end
}
在命令行输入ruby zip.rb运行该文件,然后输入搜索路径D:\ruby和匹配模式*.rb,下面是一个示例输出:
-----------------------File Search and Zip-----------------------------------
Enter the search path : D:\ruby
Enter the search pattern : *.rb
----------------------------------------------------------------------
Searching in D:\ruby for files matching pattern *.rb
----------------------------------------------------------------------
----------------------------------------------------------------------
Zipping up the found files...
----------------------------------------------------------------------
points_controller.rb
packages_controller.rb
orders_controller.rb
这样,在当前目录下便产生了一个test.zip文件。
现在输入unzip -l test.zip进行解压,下面是一个示例输出:
Archive: test.zip
Length Date Time Name
-------- -------- ------ -------------------
2341 11-25-09 17:05 orders_controller.rb
21000 11-25-09 17:05 packages_controller.rb
12889 11-25-09 17:05 points_controller.rb
-------- -------------------
36230 3 files
分享到:
- 2009-11-25 17:18
- 浏览 1243
- 评论(1)
- 论坛回复 / 浏览 (1 / 1467)
- 查看更多
相关推荐
C语言中给定路径,搜索其下的mp3,然后排序出来,可选择播放。
对给定路径的文件,计算其MD5值。输入参数为要加密的文件的路径,输出该文件的MD5字符串
求解出从给定顶点到所有顶点的最短路径 判断一个有向图g是否是一棵有向树。(任意一个顶点可能是根实验测试数据基本要求: 第一组数据: dirtree2.grp 第二组数据: grp12.grp 第三组数据: dirtree.grp 第四组数据...
要求读取指定路径下的文本文件,打印其信息。 如果按下回车就继续下一个,如果按下esc就退出。 getFiles可以获取指定路径下的所有CSV文件。可以自己修改,加上递归更可以深度遍历所给路径下的包括子路径下的...
统计给定文件中给定字符串的出现次数,java中的小功能
制作一个包含给定路径中所有感兴趣的文件的列表输入: % topPath:定义要搜索的最父路径% subPathPattern:定义要搜索的子路径的模式% fileNamePattern:定义要搜索的文件名的模式% 扩展名:定义要搜索的文件名的...
编程任务:对于给定的由n 行数字组成的数字三角形,编程计算从三角形的顶至底的路径经过的数字和的最大值。 Input 输入数据是由多组测试数据组成。第1 行是数字三角形的行数n,1≤n≤100。接下来n行是数字三角形...
这里给定一个搜索路径,需要在此目录中找出所有符合匹配模式的文件 import glob, os def all_files(pattern, search_path, pathsep = os.pathsep): for path in search_path.split(pathsep): for match in glob....
实用carsim进行仿真,simulink基于mpc进行汽车的控制,使得汽车按照给定路径点进行运行,生成视频.zip
题面描述: 给定一个非中文的文本文件以及一系列查询单词,请输出所查询单词的出现次数。
经典A*算法只注重搜索精度而忽略了搜索效率,在城市道路网络分层的基础上,对高层道路使用的A*算法进行了改进,对于道路网络中的不同节点,设置估价函数具有不同的权值,同时给定权值的一个上下限阈值,以平衡算法的...
功能描述:利用C#编程实现对于给定的搜索条件的文件名清单,在指定的文件夹搜索范围内,将符合搜索条件的文件名清单查询并拷贝至搜索文件夹的上级文件夹内。例如,需要查询文件夹中以上海、北京、广州开头的所有格式...
C#在链接mysql数据库的时候 间歇性的会出现 打开链接的时候会报错. 调整mysql.data.dll 链接驱动版本. 将程序引用dll,替换为上传压缩包中的dll
- 此函数用以查找给定的项目在给定文本文件中的存在性,可作查找内容、文本文件去重等之用; - 本函数以C语言写就,并以标准的C格式导出;所用IDE为Microsoft Visual Studio 2019,编译器遵循C17标准; - 请注意,...
其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。 1.建立文本文件 2.给定单词的计数 3.检索单词出现在文本文件中的行号、次数及其位置 4.主控菜单程序...
针对给定模式验证数据结构
给定程序中,函数fun的功能是:在任意给定的9个正整数中找出按升序排列是处于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。...
采用邻接表存储结构,编写一个判别无向图中任意给定的两个顶点之间是否存在一条长度为k得简单路径的算法
文本文件中的唯一词 在给定文本文件中显示唯一单词的脚本。
该程序实现的功能: (1)程序支持命令行参数 (2)根据参数给定的条件,实现了满足条件的路径的寻找。... (4)程序对一些异常情况进行了处理,如:给定两点间无连通路径或无满足条件的备用路径等情况。