- 浏览: 2477566 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
jsntghf:
peio 写道这个怎么运行?Ruby On Rails的环境搭 ...
多文件上传之uploadify -
peio:
这个怎么运行?
多文件上传之uploadify -
往事如烟1:
我的项目是自己init了一个原始的project,之后将ver ...
React Native热部署之CodePush -
jsntghf:
往事如烟1 写道我按照你的说明进行,发现app退出之后,在进入 ...
React Native热部署之CodePush -
往事如烟1:
我按照你的说明进行,发现app退出之后,在进入不正确,请问是什 ...
React Native热部署之CodePush
在指定路径中搜索符合给定模式的文件,并给出关于这些文件的详细信息。实现这一目标不必依赖于任何命令行程序,只需使用Ruby内建的API。
因此,这个例子在有Ruby运行的任何平台上都能运行。
而且,这个例子展示了Ruby在简化脚本编程需求方面有多强大。它不是简单地模拟"find"命令,而是构建在该命令之上,因而在使用Ruby时具有很强的定制能力。
require 'find' puts "" puts "-----------------------File Search-----------------------------------" 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 "" Find.find(searchpath) do |path| #使用Ruby中“Find”类的“find”方法遍历指定的搜索路径 #检查发现的文件是否为一个目录。如果是目录,并且不是“.”则递归遍历该目录 if FileTest.directory?(path) if File.basename(path)[0] == ?. Find.prune else next end else if File.fnmatch(pattern,File.basename(path)) #使用“File”类的“fnmatch”方法检查发现的文件是否符合给定的模式 #如果文件符合模式,则输出文件的详细信息 puts "Filename : " + File.basename(path) s = sprintf("%o",File.stat(path).mode) print "Permissions : " puts s print "Owning uid : " puts File.stat(path).uid print "Owning gid : " puts File.stat(path).uid print "Size (bytes) : " puts File.stat(path).size puts "---------------------------------------------------" end end end
在命令行输入ruby file.rb运行该文件,然后输入搜索路径D:\ruby和匹配模式*.rb,下面是一个示例输出:
-----------------------File Search----------------------------------- Enter the search path : D:\ruby Enter the search pattern : *.rb ---------------------------------------------------------------------- Searching in D:\ruby for files matching pattern *.rb ---------------------------------------------------------------------- Filename : points_controller.rb Permissions : 100644 Owning uid : 0 Owning gid : 0 Size (bytes) : 12889 --------------------------------------------------- Filename : packages_controller.rb Permissions : 100644 Owning uid : 0 Owning gid : 0 Size (bytes) : 21000 --------------------------------------------------- Filename : orders_controller.rb Permissions : 100644 Owning uid : 0 Owning gid : 0 Size (bytes) : 2341 ---------------------------------------------------
评论
22 楼
lookdd1
2009-11-27
支持 ray_linn , 技术人员不用怕被抨击,没有最好,只有更好!
21 楼
Hooopo
2009-11-26
night_stalker 写道
囧啊,本来一行就能搞定的事情 ……
再说 find 这个命令无论在 windows 还是 linux 还是 mac 都能用的 ……
Dir.glob '*.rb'
再说 find 这个命令无论在 windows 还是 linux 还是 mac 都能用的 ……
貌似rake自带的FileList和Dir.glob是一样的。一个简单的rake:
namespace :file do desc "rake search file demo" task :search do Dir.chdir ENV["dir"]||"." FileList[ENV["pattern"]].each do |file| p file end end end
执行:
C:\workspace\eldorado>rake file:search pattern=**/*.rb
结果:
"db/migrate/066_remove_sessions_table.rb" "db/migrate/067_add_timezone_to_setting.rb" "db/migrate/068_move_bans_to_users_table.rb" "db/migrate/069_create_messages.rb" "db/migrate/070_add_indexed_to_messages.rb" "db/migrate/071_add_private_to_settings.rb" "db/migrate/072_add_login_message_to_settings.rb" "db/migrate/073_removing_privacy_from_individual_models.rb" "db/migrate/074_all_nil_users_online_at.rb" "db/migrate/075_add_chatting_at_to_users.rb" "db/migrate/076_add_indexes_for_chat.rb" "db/migrate/077_add_logged_out_at_to_users.rb" "db/migrate/078_fix_indexes.rb" "db/migrate/079_add_logged_out_for_all_users.rb" "db/migrate/080_fix_user_indexes.rb" "db/migrate/081_add_sticky_index_to_topics.rb" "db/migrate/082_change_to_logged_out_for_users.rb" "db/migrate/083_remove_user_index_on_logged_out_at.rb" "db/migrate/20080526190223_remove_limit_on_users_bio.rb" "db/migrate/20080603023415_use_rails_new_default_time_zones.rb" "db/migrate/20080603035014_move_time_zone_default_to_setting_model.rb" "db/migrate/20080603230322_use_rails_new_default_time_zones_for_settings_too.rb" "db/migrate/20080712034609_create_articles.rb" "db/migrate/20080712230439_add_articles_count_to_users.rb" "db/migrate/20080725023025_create_comments.rb" "db/migrate/20080725023050_add_comments_counter_cache_to_articles.rb" "db/migrate/20080727205027_add_admin_only_create_setting.rb" "db/migrate/20080927025905_create_viewings.rb" "db/migrate/20081002051832_add_all_viewed_at_to_users.rb" "db/migrate/20081015052225_add_index_to_viewings.rb" "db/migrate/20090627234146_attachment_fu_to_paperclip_part_one.rb" "db/migrate/20090701005540_attachment_fu_to_paperclip_part_two.rb" "db/migrate/20090702030411_reset_current_theme.rb" "db/schema.rb" "lib/authentication_system.rb" "lib/exception_handler.rb" "lib/migrator.rb" "lib/paperclip_support.rb" "public/dispatch.rb" "test/blueprints.rb" "test/functional/articles_controller_test.rb" "test/functional/avatars_controller_test.rb" "test/functional/categories_controller_test.rb" "test/functional/comments_controller_test.rb" "test/functional/events_controller_test.rb" "test/functional/forums_controller_test.rb" "test/functional/headers_controller_test.rb" "test/functional/home_controller_test.rb" "test/functional/messages_controller_test.rb" "test/functional/posts_controller_test.rb" "test/functional/ranks_controller_test.rb" "test/functional/search_controller_test.rb" "test/functional/settings_controller_test.rb" "test/functional/subscriptions_controller_test.rb" "test/functional/themes_controller_test.rb" "test/functional/topics_controller_test.rb" "test/functional/uploads_controller_test.rb" "test/functional/users_controller_test.rb" "test/integration/admin_only_create_test.rb" "test/integration/exception_handler_test.rb" "test/integration/fixture_validation_test.rb" "test/integration/home_page_chat_test.rb" "test/remote/uploads_controller_test.rb" "test/remote/upload_test.rb" "test/test_helper.rb" "test/unit/article_test.rb" "test/unit/avatar_test.rb" "test/unit/category_test.rb" "test/unit/comment_test.rb" "test/unit/event_test.rb" "test/unit/forum_test.rb" "test/unit/header_test.rb" ...
20 楼
poshboytl
2009-11-24
ray_linn 写道
poshboytl 写道
ray_linn 写道
222xiaohuan 写道
那你应该加上对你来说没有意义,对于我们这些水平低的人很多东西还是很有意义的。
嘿嘿,你不知道robbin一向风格是不欢迎新手么
你就是自认为自己要不完了...
robbin文风的确犀利... 但是别人说的有道理, 有价值...
我不是不喜欢抨击.... 相反我很喜欢有意义有价值的抨击....
很多东西要辩才能有更好的解决方案....
你看你的抨击有价值吗???
笑眯眯走过~
不送, 希望你永远不要回来了....
19 楼
ray_linn
2009-11-24
poshboytl 写道
ray_linn 写道
222xiaohuan 写道
那你应该加上对你来说没有意义,对于我们这些水平低的人很多东西还是很有意义的。
嘿嘿,你不知道robbin一向风格是不欢迎新手么
你就是自认为自己要不完了...
robbin文风的确犀利... 但是别人说的有道理, 有价值...
我不是不喜欢抨击.... 相反我很喜欢有意义有价值的抨击....
很多东西要辩才能有更好的解决方案....
你看你的抨击有价值吗???
笑眯眯走过~
18 楼
poshboytl
2009-11-24
rubynroll 写道
就题目给定的需求,个人觉得还是直接用find命令最方便,配合管道与其它程序如sed配合功能也可以很强大。不过在程序中Find还是很好用。
如果可以用find其实我也倾向于用find....
但是我认为楼主就是要提供 一个不依赖于命令行的纯ruby的解决方案....
17 楼
poshboytl
2009-11-24
ray_linn 写道
222xiaohuan 写道
那你应该加上对你来说没有意义,对于我们这些水平低的人很多东西还是很有意义的。
嘿嘿,你不知道robbin一向风格是不欢迎新手么
你就是自认为自己要不完了...
robbin文风的确犀利... 但是别人说的有道理, 有价值...
我不是不喜欢抨击.... 相反我很喜欢有意义有价值的抨击....
很多东西要辩才能有更好的解决方案....
你看你的抨击有价值吗???
16 楼
rubynroll
2009-11-24
就题目给定的需求,个人觉得还是直接用find命令最方便,配合管道与其它程序如sed配合功能也可以很强大。不过在程序中Find还是很好用。
15 楼
222xiaohuan
2009-11-24
ray_linn 写道
222xiaohuan 写道
那你应该加上对你来说没有意义,对于我们这些水平低的人很多东西还是很有意义的。
嘿嘿,你不知道robbin一向风格是不欢迎新手么
那你又老到哪里去了啊,我为什么要迎合他的喜好,他难道就是天生老手吗?真是搞笑
14 楼
ray_linn
2009-11-24
222xiaohuan 写道
那你应该加上对你来说没有意义,对于我们这些水平低的人很多东西还是很有意义的。
嘿嘿,你不知道robbin一向风格是不欢迎新手么
13 楼
poshboytl
2009-11-24
ray_linn 写道
Hooopo 写道
我有说楼主的代码不对,不好了吗?
我只是提供another way.....怎么这也too native了?
我只是提供another way.....怎么这也too native了?
很aggressive的人是我,要抨击的还是这个地方
# print "Permissions : " # puts s # print "Owning uid : " # puts File.stat(path).uid # print "Owning gid : " # puts File.stat(path).uid # print "Size (bytes) : " # puts File.stat(path).size
My god,就是在C语言里,printf也不是这么用的.
#{..}这个总可以用吧,换行就\n就可以了,这位大侠好么,切着print和puts来回折腾,这样是否体现ruby很强大 ?
实在看不下去了....
有些人在javaeye里 除了抨击这个就是洗刷那个...
而且从来都抨击的一点价值都没有....
你那说的 都哪儿跟哪儿啊??? 而且态度恶劣.. 一副要不完的样子....
javaeye里面这样的人还不少.... 哎....这样会毁了javaeye社区的....
12 楼
222xiaohuan
2009-11-24
ray_linn 写道
222xiaohuan 写道
ray_linn 写道
这样也叫强大...在find的之上做的有意义的事为零。。。
这位大侠,你给大家解释一下什么才叫有意义的事,不要鄙视别人的劳动成果好不好
ruby -e"system('dir /s *.rb')" ,这样的东西如果有意义的话,我每天有意义的东西也太多了些。
那你应该加上对你来说没有意义,对于我们这些水平低的人很多东西还是很有意义的。
11 楼
ray_linn
2009-11-24
Hooopo 写道
我有说楼主的代码不对,不好了吗?
我只是提供another way.....怎么这也too native了?
我只是提供another way.....怎么这也too native了?
很aggressive的人是我,要抨击的还是这个地方
# print "Permissions : " # puts s # print "Owning uid : " # puts File.stat(path).uid # print "Owning gid : " # puts File.stat(path).uid # print "Size (bytes) : " # puts File.stat(path).size
My god,就是在C语言里,printf也不是这么用的.
#{..}这个总可以用吧,换行就\n就可以了,这位大侠好么,切着print和puts来回折腾,这样是否体现ruby很强大 ?
10 楼
Hooopo
2009-11-24
0701 写道
Hooopo 写道
0701 写道
night_stalker 写道
囧啊,本来一行就能搞定的事情 ……
再说 find 这个命令无论在 windows 还是 linux 还是 mac 都能用的 ……
Dir.glob '*.rb'
再说 find 这个命令无论在 windows 还是 linux 还是 mac 都能用的 ……
又见一行命令能干啥干啥,你看清楼主的帖子了吗?你确定你这一行代码可以满足楼主的需求?
一行也不是不可能的..
require 'find' Find.find(ARGV[0]){|file| [:mode, :uid, :gid,:size].each{|m| puts File.stat(file).send(m)} if File.file?(file) && File.basename(file) =~/#{ARGV[1]}/ }
有人愿意拆开写,有人喜欢一个链条大循环,风格不同而已,况且楼主更多的是想体现出过程,多打印了几条提示语而已,too naive的抬杠
我有说楼主的代码不对,不好了吗?
我只是提供another way.....怎么这也too native了?
9 楼
ray_linn
2009-11-24
222xiaohuan 写道
ray_linn 写道
这样也叫强大...在find的之上做的有意义的事为零。。。
这位大侠,你给大家解释一下什么才叫有意义的事,不要鄙视别人的劳动成果好不好
ruby -e"system('dir /s *.rb')" ,这样的东西如果有意义的话,我每天有意义的东西也太多了些。
8 楼
0701
2009-11-24
Hooopo 写道
0701 写道
night_stalker 写道
囧啊,本来一行就能搞定的事情 ……
再说 find 这个命令无论在 windows 还是 linux 还是 mac 都能用的 ……
Dir.glob '*.rb'
再说 find 这个命令无论在 windows 还是 linux 还是 mac 都能用的 ……
又见一行命令能干啥干啥,你看清楼主的帖子了吗?你确定你这一行代码可以满足楼主的需求?
一行也不是不可能的..
require 'find' Find.find(ARGV[0]){|file| [:mode, :uid, :gid,:size].each{|m| puts File.stat(file).send(m)} if File.file?(file) && File.basename(file) =~/#{ARGV[1]}/ }
有人愿意拆开写,有人喜欢一个链条大循环,风格不同而已,况且楼主更多的是想体现出过程,多打印了几条提示语而已,too naive的抬杠
7 楼
222xiaohuan
2009-11-24
ray_linn 写道
这样也叫强大...在find的之上做的有意义的事为零。。。
这位大侠,你给大家解释一下什么才叫有意义的事,不要鄙视别人的劳动成果好不好
6 楼
Hooopo
2009-11-24
0701 写道
night_stalker 写道
囧啊,本来一行就能搞定的事情 ……
再说 find 这个命令无论在 windows 还是 linux 还是 mac 都能用的 ……
Dir.glob '*.rb'
再说 find 这个命令无论在 windows 还是 linux 还是 mac 都能用的 ……
又见一行命令能干啥干啥,你看清楼主的帖子了吗?你确定你这一行代码可以满足楼主的需求?
一行也不是不可能的..
require 'find' Find.find(ARGV[0]){|file| [:mode, :uid, :gid,:size].each{|m| puts File.stat(file).send(m)} if File.file?(file) && File.basename(file) =~/#{ARGV[1]}/ }
5 楼
Hooopo
2009-11-24
night_stalker 写道
囧啊,本来一行就能搞定的事情 ……
再说 find 这个命令无论在 windows 还是 linux 还是 mac 都能用的 ……
Dir.glob '*.rb'
再说 find 这个命令无论在 windows 还是 linux 还是 mac 都能用的 ……
ruby的find还是很好用的:
require 'find' puts "input your dir:" dir = gets.chomp puts "input your pattern:" pattern = gets.chomp Find.find(dir) do |file| puts file if File.file?(file) && File.basename(file) =~/#{pattern}/ end
4 楼
0701
2009-11-24
ray_linn 写道
这样也叫强大...在find的之上做的有意义的事为零。。。
什么叫做DSL?
3 楼
0701
2009-11-24
night_stalker 写道
囧啊,本来一行就能搞定的事情 ……
再说 find 这个命令无论在 windows 还是 linux 还是 mac 都能用的 ……
Dir.glob '*.rb'
再说 find 这个命令无论在 windows 还是 linux 还是 mac 都能用的 ……
又见一行命令能干啥干啥,你看清楼主的帖子了吗?你确定你这一行代码可以满足楼主的需求?
发表评论
-
Redmine集成知识库
2013-08-26 22:25 32271、下载redmine的知识库插件:redmine_know ... -
Redmine集成SVN
2013-08-20 20:13 53251、进入redmine目录下的config目录,我的是/Ap ... -
Redmine集成CKEditor
2013-08-15 21:08 4362Redmine的文本格式默认只支持textile,对于普通 ... -
如何使用Assets Pipeline
2011-11-21 16:13 1933Rails 3.1之前,所有资源文件都放在public的子目录 ... -
Rails console显示执行的Sql语句
2011-11-18 08:49 1859调试Active Record时经常会用到rails cons ... -
migrate中使用bigint
2011-11-14 10:40 2016使用mysql时,integer最大是10位。如果想存储更大的 ... -
rails中使用UUID
2011-11-08 08:44 2674可以将uuid的包拷贝到vendor/plugins下,或者在 ... -
Rails里删除Prototype改用JQuery的方法
2011-11-02 10:55 1451首先在Gemfile中添加jquery的gem gem ... -
ActionView::Template::Error (***.css isn’t precompiled)
2011-10-24 11:10 2457升级到Rails 3.1后,当rails s -e produ ... -
Rails Bundle简介
2011-10-21 09:00 1523Rails 3开始使用bundle来管理项目的gem依赖。该命 ... -
非WEB程序中使用Active Record
2011-10-18 16:08 1415一、新建一个Ruby文件 require " ... -
Rails中使用多选框
2011-10-14 10:10 2254<%= select_tag("tag_ids ... -
Could not find a JavaScript runtime
2011-10-13 13:17 1623Rails3.1下报出下面的错误: /gems/exe ... -
通过POP3读取邮件
2011-10-06 01:36 1504require 'net/pop' pop ... -
观察者模式
2011-10-01 16:24 1484require 'observer' class ... -
ruby1.9的中文问题
2011-09-29 08:31 1776STATUS = { "0" =&g ... -
列出所有的控制器以及方法名
2011-09-27 10:43 1550controllers = Dir.new("#{R ... -
abort的使用
2011-09-22 13:30 1481很多人可能会这样用: def stop_error(m ... -
rails3中mysql2的安装
2011-09-20 16:01 2001rails3中默认的mysql适配器是mysql2,执行以下命 ... -
让查询变得更优雅
2011-09-19 20:19 1070RailsWhere可以让代码变得更简洁。 看一 ...
相关推荐
这里给定一个搜索路径,需要在此目录中找出所有符合匹配模式的文件 import glob, os def all_files(pattern, search_path, pathsep = os.pathsep): for path in search_path.split(pathsep): for match in glob....
spark-json-schema ... 通过提供输入文件的路径来解析给定的json模式文件。 该文件应相对于resources文件夹: val schema = SchemaConverter .convert( " schemaFile.json " ) 或者,您可以将convertCont
1、本软件中在所给定的密钥长度小于所需的密钥长度时采取了自动补全的策略,同时将其中的不可显示字符(如:回车符)用空格取代策略。在初始向量的导入也采用了将其中的不可显示的字符(如:回车符)用空格取代的...
File.createTempFile() 在系统临时目录创建临时文件 目录列表 list() 返回 String[],包含子文件、子目录名称 listFiles() 返回 File[],包含子文件、子目录的 File 对象 ...
GetPrivateProfileSection 获取指定小节(在.ini文件中)所有项名和值的一个列表 GetPrivateProfileString 为初始化文件中指定的条目取得字串 GetProfileInt 取得win.ini初始化文件中指定条目的一个整数值 ...
硕士2项目生物信息学,南特大学,Quentin Clayssen,Antoine Laine 使用Memetic和路径重新链接方法检测上位模式项目初始化为了编译整个项目,在项目的根目录提供了一个makefile。 这个makefile将调用每个方法的...
如果为此参数指定了一个值, 则该值将覆盖 make 文件中的默认值。 值范围: C 编译程序的完整路径。 默认值: 无 remote_dependencies_mode: 说明: 用于指定数据库为远程 PL/SQL 存储的过程处理被依赖对象的方式。如果...
0317 在 %2 的消息文件中,系统无法找到消息号为 0x%1 的消息文本。 0487 试图访问无效地址。 0534 运算结果超过 32 位。 0535 该管道的另一方有一进程。 0536 等候进程打开管道的另一端。 ...
Karen Morton及其团队在本书中提供了专业的方案:先掌握语言特性,再学习Oracle为提升语言效率而加入的支持特性,进而将两者综合考虑并在工作中加以应用。作者通过总结各自多年的软件开发和教学培训经验,与大家...
一个node可以在一个给定的topic中发布消息。Topic是一个name被用于描述消息内容。一个node针对某个topic关注与订阅特定类型的数据。可能同时有多个node发布或者订阅同一个topic的消息;也可能有一个topic同时发布或...
在测试生命周期中,缺陷趋势遵循着一种比较好预测的模式。在生命周期的初期,缺陷率增长很快。在达到顶峰后,就随时间以较慢的速率下降。 要发现问题,可以根据这一趋势复审项目时间表。例如,在四个星期的生命...
(注:手牌在系统主界面中以图标显示,单击主界面中的 “图标/列表” 按钮可切换显示模式) 进入 “顾客开单” 界面后(如图2),可以看到各个包间的可供手牌和相关费用。 押金金额(根椐本店情况而定) 填写完之后...
而在文件系统中,数据的存取单位只有一 个:记录,如一个学生的完整记录。 ( 2 )数据的共享性高,冗余度低,易扩充数据库的数据不再面向某个应用而是面向整个 系统,因此可以被多个用户、多个应用以多种不同的语言...
在组装过程中,需要对整个系统进行集成测试,以确保系统在技术上符合设计要求,在应用上满足需求规格要求。 5.系统确认验证 在完成对系统的集成之后,接着还要对系统进行确认验证。 系统确认验证需要以用户为主体,...