`
jsntghf
  • 浏览: 2533626 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

在给定路径中搜索符合给定模式的文件

阅读更多

在指定路径中搜索符合给定模式的文件,并给出关于这些文件的详细信息。实现这一目标不必依赖于任何命令行程序,只需使用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
---------------------------------------------------
分享到:
评论
2 楼 night_stalker 2009-11-24  
囧啊,本来一行就能搞定的事情 ……
Dir.glob '*.rb'


再说 find 这个命令无论在 windows 还是 linux 还是 mac 都能用的 ……
1 楼 ray_linn 2009-11-24  
这样也叫强大...在find的之上做的有意义的事为零。。。

相关推荐

    Python3指定路径寻找符合匹配模式文件

    这里给定一个搜索路径,需要在此目录中找出所有符合匹配模式的文件 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中,我们可以利用...

    经过指定的中间节点集的最短路径算法

    在给定的"经过指定的中间节点集的最短路径算法"中,Matlab源码实现了更复杂的场景,即不仅要求找到最短路径,还要确保路径必须经过一组特定的中间节点,并且可能有特定的行驶方向限制。 1. **Dijkstra算法基础**:...

    systemverilog读写文件测试代码

    用于从文件中读取数据,并将其存入指定的变量中,格式如下: ```verilog int read = $fread(destination, file); ``` - `destination`: 指定的数据结构,用于存放读取的结果。 - `file`: 打开文件的句柄。 #### `$...

    Node.js设置项目路径.txt

    通常这些依赖会记录在项目的`package.json`文件中。可以通过执行以下命令来安装: ```bash npm install ``` #### 2. 运行开发服务器 一旦依赖安装完成,就可以启动开发服务器了。常见的开发命令包括`npm run dev`和...

    模板方法模式

    在给定的描述中,模板方法模式用于展示某个目录下所有文件的名字。这个过程可以按照不同的排序规则进行,如按文件大小、最后修改时间或文件名的字节顺序。这里,我们可以将这个过程看作一个算法,包含以下几个步骤:...

    批处理实现新建一和文件同名文件夹并将该文件放到文件夹中

    本文将深入解析如何利用批处理脚本来实现创建与文件同名的文件夹,并将文件移动到该文件夹中的过程,这是一项在数据管理、文件归档以及自动化处理流程中常见的需求。 ### 批处理脚本的核心概念 批处理脚本是基于...

    php实现文件管理与基础功能操作

    `glob()`函数用于搜索符合特定模式的文件名,它返回一个包含匹配结果的数组。 在实际应用中,这些函数和方法的组合使用可以实现各种复杂的文件管理和操作,比如文件上传、下载、移动、重命名、权限设置等。理解并...

    Pythonglob模块的应用glob文件路径查找.pdf-综合文档

    - `glob.glob(pattern)`:返回所有匹配给定模式的文件路径名列表。 - `glob.iglob(pattern)`:与`glob.glob`类似,不过返回的是一个迭代器。 ### 示例代码解析 ```python # -*- coding:utf-8 -*- import glob ...

    一个支持通配符的文件操作类

    在描述中同样强调了这个类与通配符的关联,意味着它可能提供了诸如搜索、复制、移动、删除等与文件相关的操作,并且这些操作可以基于包含通配符的模式来执行,而不是仅仅针对单个文件或固定的文件名。 在标签“文件...

    支持通配符的模式匹配算法

    通配符模式匹配是计算机科学中的一个重要概念,特别是在文本处理、搜索算法以及文件系统路径匹配等领域广泛应用。在给定的场景中,我们关注的是如何设计一个算法来处理包含特殊字符`?`和`*`的模式串,并在主串中找到...

    ANDROID文件操作

    在主活动中,用户可能通过EditText输入数据,然后通过RandomAccessFile类将输入的数据写入到文件中或从文件中读取数据,并将结果显示在TextView组件中。 在Android开发中,任何对文件的操作都可能抛出IOException,...

    python实现搜索指定目录下文件及文件内搜索指定关键词的方法

    在日常工作中,我们经常需要查找某个特定目录下的所有文件,甚至需要进一步搜索这些文件中的特定关键词。例如,在开发过程中可能需要快速定位含有某个变量或函数的所有文件,或者在维护文档时需要找到包含特定术语的...

    FATFS文件系统应用程序手册(中文版).pdf

    f_read函数用于从文件中读取数据。它需要文件对象指针(FIL* FileObject)、缓冲区指针(void* Buffer)、要读取的字节数(UINT ByteToRead),以及一个指向实际读取字节数的指针(UINT* ByteRead)。成功读取数据后...

    php操作文件函数

    33. **fscanf()**:从文件中按格式读取数据。 34. **fseek()**:在文件指针中设定新的读写位置。 35. **fstat()**:获取文件指针关联文件的信息。 36. **ftell()**:返回文件指针的当前位置。 37. **ftruncate()...

    Struts+1.x文件的上传和下载.txt

    尽管给定内容中未详细展示文件下载的实现,但可以推测其流程大致如下:在用户请求下载某个文件时,服务器会根据请求的参数找到对应的文件路径,然后创建文件的输入流,将其封装成HTTP响应的输出流,发送回客户端。...

    Java用File模糊删除少量文件

    在Java编程中,删除文件是一项常见的操作,但有时我们可能需要根据特定条件,如文件名的部分内容,来实现“模糊删除”少量文件。这通常涉及到文件I/O操作和正则表达式的应用。以下是对这个主题的详细解释: 首先,...

    FilenameFileter list 查看 java文件列表(过滤 java文件)

    在Java编程中,`FilenameFilter` 是一个接口,它用于过滤文件名,允许我们根据特定的文件扩展名或模式选择性地列出目录中的文件。在给定的标题和描述中,我们关注的是如何使用 `FilenameFilter` 来查看并列出只包含 ...

Global site tag (gtag.js) - Google Analytics