- 浏览: 2533654 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
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 33091、下载redmine的知识库插件:redmine_know ... -
Redmine集成SVN
2013-08-20 20:13 53971、进入redmine目录下的config目录,我的是/Ap ... -
Redmine集成CKEditor
2013-08-15 21:08 4419Redmine的文本格式默认只支持textile,对于普通 ... -
如何使用Assets Pipeline
2011-11-21 16:13 1992Rails 3.1之前,所有资源文件都放在public的子目录 ... -
Rails console显示执行的Sql语句
2011-11-18 08:49 1907调试Active Record时经常会用到rails cons ... -
migrate中使用bigint
2011-11-14 10:40 2058使用mysql时,integer最大是10位。如果想存储更大的 ... -
rails中使用UUID
2011-11-08 08:44 2741可以将uuid的包拷贝到vendor/plugins下,或者在 ... -
Rails里删除Prototype改用JQuery的方法
2011-11-02 10:55 1523首先在Gemfile中添加jquery的gem gem ... -
ActionView::Template::Error (***.css isn’t precompiled)
2011-10-24 11:10 2507升级到Rails 3.1后,当rails s -e produ ... -
Rails Bundle简介
2011-10-21 09:00 1585Rails 3开始使用bundle来管理项目的gem依赖。该命 ... -
非WEB程序中使用Active Record
2011-10-18 16:08 1461一、新建一个Ruby文件 require " ... -
Rails中使用多选框
2011-10-14 10:10 2324<%= select_tag("tag_ids ... -
Could not find a JavaScript runtime
2011-10-13 13:17 1686Rails3.1下报出下面的错误: /gems/exe ... -
通过POP3读取邮件
2011-10-06 01:36 1573require 'net/pop' pop ... -
观察者模式
2011-10-01 16:24 1545require 'observer' class ... -
ruby1.9的中文问题
2011-09-29 08:31 1841STATUS = { "0" =&g ... -
列出所有的控制器以及方法名
2011-09-27 10:43 1603controllers = Dir.new("#{R ... -
abort的使用
2011-09-22 13:30 1537很多人可能会这样用: def stop_error(m ... -
rails3中mysql2的安装
2011-09-20 16:01 2073rails3中默认的mysql适配器是mysql2,执行以下命 ... -
让查询变得更优雅
2011-09-19 20:19 1114RailsWhere可以让代码变得更简洁。 看一 ...
相关推荐
这里给定一个搜索路径,需要在此目录中找出所有符合匹配模式的文件 import glob, os def all_files(pattern, search_path, pathsep = os.pathsep): for path in search_path.split(pathsep): for match in glob....
在Java中,可以使用`Files.walk()`方法从给定的起始路径开始,递归地遍历文件树。配合`Files.isRegularFile()`判断是否为普通文件,以及`Path.getFileName().toString()`获取文件名,可以筛选出符合条件的文件。 ...
在MATLAB中,递归搜索文件是一项非常实用的功能,它允许用户在指定的目录及其子目录下查找符合特定条件的文件或文件夹。这个过程通常涉及到编程中的递归概念,即函数调用自身来解决问题。在MATLAB中,我们可以利用...
在给定的"经过指定的中间节点集的最短路径算法"中,Matlab源码实现了更复杂的场景,即不仅要求找到最短路径,还要确保路径必须经过一组特定的中间节点,并且可能有特定的行驶方向限制。 1. **Dijkstra算法基础**:...
用于从文件中读取数据,并将其存入指定的变量中,格式如下: ```verilog int read = $fread(destination, file); ``` - `destination`: 指定的数据结构,用于存放读取的结果。 - `file`: 打开文件的句柄。 #### `$...
通常这些依赖会记录在项目的`package.json`文件中。可以通过执行以下命令来安装: ```bash npm install ``` #### 2. 运行开发服务器 一旦依赖安装完成,就可以启动开发服务器了。常见的开发命令包括`npm run dev`和...
在给定的描述中,模板方法模式用于展示某个目录下所有文件的名字。这个过程可以按照不同的排序规则进行,如按文件大小、最后修改时间或文件名的字节顺序。这里,我们可以将这个过程看作一个算法,包含以下几个步骤:...
本文将深入解析如何利用批处理脚本来实现创建与文件同名的文件夹,并将文件移动到该文件夹中的过程,这是一项在数据管理、文件归档以及自动化处理流程中常见的需求。 ### 批处理脚本的核心概念 批处理脚本是基于...
`glob()`函数用于搜索符合特定模式的文件名,它返回一个包含匹配结果的数组。 在实际应用中,这些函数和方法的组合使用可以实现各种复杂的文件管理和操作,比如文件上传、下载、移动、重命名、权限设置等。理解并...
- `glob.glob(pattern)`:返回所有匹配给定模式的文件路径名列表。 - `glob.iglob(pattern)`:与`glob.glob`类似,不过返回的是一个迭代器。 ### 示例代码解析 ```python # -*- coding:utf-8 -*- import glob ...
在描述中同样强调了这个类与通配符的关联,意味着它可能提供了诸如搜索、复制、移动、删除等与文件相关的操作,并且这些操作可以基于包含通配符的模式来执行,而不是仅仅针对单个文件或固定的文件名。 在标签“文件...
通配符模式匹配是计算机科学中的一个重要概念,特别是在文本处理、搜索算法以及文件系统路径匹配等领域广泛应用。在给定的场景中,我们关注的是如何设计一个算法来处理包含特殊字符`?`和`*`的模式串,并在主串中找到...
在主活动中,用户可能通过EditText输入数据,然后通过RandomAccessFile类将输入的数据写入到文件中或从文件中读取数据,并将结果显示在TextView组件中。 在Android开发中,任何对文件的操作都可能抛出IOException,...
在日常工作中,我们经常需要查找某个特定目录下的所有文件,甚至需要进一步搜索这些文件中的特定关键词。例如,在开发过程中可能需要快速定位含有某个变量或函数的所有文件,或者在维护文档时需要找到包含特定术语的...
f_read函数用于从文件中读取数据。它需要文件对象指针(FIL* FileObject)、缓冲区指针(void* Buffer)、要读取的字节数(UINT ByteToRead),以及一个指向实际读取字节数的指针(UINT* ByteRead)。成功读取数据后...
33. **fscanf()**:从文件中按格式读取数据。 34. **fseek()**:在文件指针中设定新的读写位置。 35. **fstat()**:获取文件指针关联文件的信息。 36. **ftell()**:返回文件指针的当前位置。 37. **ftruncate()...
尽管给定内容中未详细展示文件下载的实现,但可以推测其流程大致如下:在用户请求下载某个文件时,服务器会根据请求的参数找到对应的文件路径,然后创建文件的输入流,将其封装成HTTP响应的输出流,发送回客户端。...
在Java编程中,删除文件是一项常见的操作,但有时我们可能需要根据特定条件,如文件名的部分内容,来实现“模糊删除”少量文件。这通常涉及到文件I/O操作和正则表达式的应用。以下是对这个主题的详细解释: 首先,...
在Java编程中,`FilenameFilter` 是一个接口,它用于过滤文件名,允许我们根据特定的文件扩展名或模式选择性地列出目录中的文件。在给定的标题和描述中,我们关注的是如何使用 `FilenameFilter` 来查看并列出只包含 ...