Ruby中的“Globbing”文件(带有Dir.glob)允许您选择给定目录中所需的文件,例如所有XML文件。尽管Dir.blog类似于正则表达式,但事实并非如此。与Ruby的正则表达式相比,它非常有限,并且与shell扩展通配符的关系更密切。
与globbing相反,可以使用Dir.foreach方法对目录中的所有文件进行迭代。
以下glob将匹配当前目录中以.rb结尾的所有文件。它使用一个通配符,即星号。星号将匹配零个或多个字符,因此任何以.rb结尾的文件都将匹配此glob,包括名为simply.rb的文件,在文件扩展名及其前一个句点之前没有任何内容。glob方法将以数组的形式返回与globbing规则匹配的所有文件,这些文件可以保存以供以后使用或迭代。
#!/usr/bin/env ruby Dir.glob('*.rb').each do|f| puts f end只有几个通配符需要学习:
有一点需要考虑的是病例敏感性。由操作系统决定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']**目录不仅仅是为了写小说、冗长的法律文件或论文的人。他们是一个伟大的方式来保持你的写作组织,无论内容。 ...
... 灯塔的结构是以“目录”为基础的。光室目录不是存储照片的地方。这意味着,当使用Lightroom时,您几乎可以将照片存储在任何您喜欢的文件夹中,无论是在内部硬盘还是外部硬盘上。灯塔...
过去,Adobe Lightroom需要多个目录。如果你没有创建多个目录,你可能会面临一个相当慢的程序。或者经常使用,你会达到极限。 ...
... ls命令用于列出当前工作目录中的所有文件和文件夹。您还可以使用同一命令获取有关文件的各种信息。因为它已经包含在GNU核心实用程序包中,所以您不需要在系统上安装任何附加包就可以使用...
在InDesign中创建长文档(如书籍或目录)时,很可能需要包含目录页。虽然您可以手动执行此操作,但最好让InDesign为您生成目录。 ...
...例如,Ksh有cd old new命令。如果您在/Downloads/foo/bar/one/foobar目录下,需要进入/Downloads/foo/bar/two/foobar,则只需输入: ...
...选项 在autocd选项设置为on的情况下,如果在命令行中键入目录名并按Enter键,它将被视为前面键入了cd。 我们键入以下命令以打开autocd选项: shopt -s autocd 然后,键入目录名: Documents cdspell选项 当cdspell选项打开时,Bash将自动更...
systemd的团队希望您采用一种新的方式来管理主目录。称之为“新方式”是轻描淡写的,这是Linux的一个真正的范式转变。以下是您需要了解的有关systemd homed的所有信息,它可能会出现在您附近的Linux发行版中。 对争议并不陌生...