对目录使用glob

Ruby中的“Globbing”文件(带有Dir.glob)允许您选择给定目录中所需的文件,例如所有XML文件。尽管Dir.blog类似于正则表达式,但事实并非如此。与Ruby的正则表达式相比,它非常有限,并且与shell扩展通配符的关系更密切。...

Ruby中的“Globbing”文件(带有Dir.glob)允许您选择给定目录中所需的文件,例如所有XML文件。尽管Dir.blog类似于正则表达式,但事实并非如此。与Ruby的正则表达式相比,它非常有限,并且与shell扩展通配符的关系更密切。

Little girl learning to code on desktop computer at home

与globbing相反,可以使用Dir.foreach方法对目录中的所有文件进行迭代。

实例

以下glob将匹配当前目录中以.rb结尾的所有文件。它使用一个通配符,即星号。星号将匹配零个或多个字符,因此任何以.rb结尾的文件都将匹配此glob,包括名为simply.rb的文件,在文件扩展名及其前一个句点之前没有任何内容。glob方法将以数组的形式返回与globbing规则匹配的所有文件,这些文件可以保存以供以后使用或迭代。

#!/usr/bin/env ruby Dir.glob('*.rb').each do|f| puts f end

通配符等

只有几个通配符需要学习:

  • *–匹配零个或多个字符。只有星号而没有其他字符或通配符的glob将匹配当前目录中的所有文件。星号通常与文件扩展名(如果不是更多字符)结合使用,以缩小搜索范围。
  • **–递归匹配所有目录。这用于向下进入目录树并查找当前目录子目录中的所有文件,而不仅仅是当前目录中的文件。下面的示例代码探讨了此通配符。
  • ? – 匹配任意一个字符。这对于查找名称为特定格式的文件非常有用。例如,5个字符和.xml扩展名可以表示为.xml。
  • [a-z]–匹配字符集中的任何字符。该集合可以是字符列表,也可以是用连字符分隔的范围。字符集的语法与正则表达式中的字符集相同,行为方式也与正则表达式中的字符集相同。
  • {a,b}–匹配模式a或b。虽然这看起来像一个正则表达式量词,但事实并非如此。例如,在正则表达式中,模式a{1,2}将匹配1或2个“a”字符。在globbing中,它将匹配字符串a1或a2。其他模式可以嵌套在此构造中。

有一点需要考虑的是病例敏感性。由操作系统决定TEST.txt和TEST.txt是否引用同一个文件。在Linux和其他系统上,这些是不同的文件。在Windows上,这些将引用同一文件。

操作系统还负责结果的显示顺序。例如,如果您使用的是Windows和Linux,则可能会有所不同。

最后要注意的是Dir[globstring]便利方法。这在功能上与Dir.glob(globstring)相同,并且在语义上也是正确的(您正在为目录编制索引,非常类似于数组)。因此,您可能会比Dir.glob更频繁地看到Dir[],但它们是一样的。

使用通配符的示例

下面的示例程序将以多种不同的组合演示尽可能多的模式。

#!/usr/bin/env ruby # Get all .xml files Dir['*.xml'] # Get all files with 5 characters and a .jpg extension Dir['?????.jpg'] # Get all jpg, png and gif images Dir['*.{jpg,png,gif}'] # Descend into the directory tree and get all jpg images # Note: this will also file jpg images in the current directory Dir['**/*.jpg'] # Descend into all directories starting with Uni and find all # jpg images. # Note: this only descends down one directory Dir['Uni**/*.jpg'] # Descend into all directories starting with Uni and all # subdirectories of directories starting with Uni and find # all .jpg images Dir['Uni**/**/*.jpg']

  • 发表于 2021-10-01 06:12
  • 阅读 ( 269 )
  • 分类:编程

你可能感兴趣的文章

如何在microsoft word中创建目录(带有免费模板)

**目录不仅仅是为了写小说、冗长的法律文件或论文的人。他们是一个伟大的方式来保持你的写作组织,无论内容。 ...

  • 发布于 2021-03-17 09:09
  • 阅读 ( 424 )

将照片导入到灯光室的完整指南

... 灯塔的结构是以“目录”为基础的。光室目录不是存储照片的地方。这意味着,当使用Lightroom时,您几乎可以将照片存储在任何您喜欢的文件夹中,无论是在内部硬盘还是外部硬盘上。灯塔...

  • 发布于 2021-03-17 15:54
  • 阅读 ( 213 )

microsoft word最佳目录模板示例

目录示例和模板有多种形式。本文总结了一些最漂亮的microsoftword模板。 ...

  • 发布于 2021-03-22 11:50
  • 阅读 ( 537 )

开始在lightroom中使用多个目录的3个原因

过去,Adobe Lightroom需要多个目录。如果你没有创建多个目录,你可能会面临一个相当慢的程序。或者经常使用,你会达到极限。 ...

  • 发布于 2021-03-25 06:50
  • 阅读 ( 199 )

如何在linux中使用ls命令

... ls命令用于列出当前工作目录中的所有文件和文件夹。您还可以使用同一命令获取有关文件的各种信息。因为它已经包含在GNU核心实用程序包中,所以您不需要在系统上安装任何附加包就可以使用...

  • 发布于 2021-03-26 18:01
  • 阅读 ( 184 )

如何在indesign中建立目录

在InDesign中创建长文档(如书籍或目录)时,很可能需要包含目录页。虽然您可以手动执行此操作,但最好让InDesign为您生成目录。 ...

  • 发布于 2021-03-28 04:41
  • 阅读 ( 222 )

关于linux中bash for loops的所有知识

...建以下文件(理想情况下,首先打开终端并导航到所需的目录): ...

  • 发布于 2021-03-29 06:22
  • 阅读 ( 307 )

哪个linux shell最好?比较了5种常见的贝壳

...例如,Ksh有cd old new命令。如果您在/Downloads/foo/bar/one/foobar目录下,需要进入/Downloads/foo/bar/two/foobar,则只需输入: ...

  • 发布于 2021-03-30 18:45
  • 阅读 ( 366 )

如何使用shopt定制bashshell

...选项 在autocd选项设置为on的情况下,如果在命令行中键入目录名并按Enter键,它将被视为前面键入了cd。 我们键入以下命令以打开autocd选项: shopt -s autocd 然后,键入目录名: Documents cdspell选项 当cdspell选项打开时,Bash将自动更...

  • 发布于 2021-04-01 12:30
  • 阅读 ( 171 )

systemd将改变linux主目录的工作方式

systemd的团队希望您采用一种新的方式来管理主目录。称之为“新方式”是轻描淡写的,这是Linux的一个真正的范式转变。以下是您需要了解的有关systemd homed的所有信息,它可能会出现在您附近的Linux发行版中。 对争议并不陌生...

  • 发布于 2021-04-02 04:05
  • 阅读 ( 200 )
jm1tdxii
jm1tdxii

0 篇文章

相关推荐