使用 Regexp 的 Ruby Dir.glob 替代品

标签 ruby filepath glob dir

Ruby 的 Dir.glob 接受具有某些正则表达式行为的 glob String,但它不具备 Regexp 的全部功能。

Ruby 中有哪些替代方案(包括 core 和 gems)Dir.glob 允许使用 Regexp 来匹配文件路径?

最佳答案

glob 的特点是它可以匹配子路径。当您编写 Dir.glob('*/*') 时,它将直接返回当前目录子目录下的所有文件和目录。它可以做到这一点,因为 glob 模式对于计算机来说足够简单 - 如果它是正则表达式,它必须扫描整个文件系统并将每个路径与模式进行比较,这实在是太多了。

但是,您可以结合使用 - 使用 Dir.glob 选择要搜索的where,并使用 grep 选择what 搜索:

[1] pry(main)> Dir.glob('/usr/lib/*').grep(/\/lib[A-Z]+\.so$/)
=> ["/usr/lib/libFLAC.so", "/usr/lib/libEGL.so", "/usr/lib/libHACD.so", "/usr/lib/libLTO.so", "/usr/lib/libGLEW.so", "/usr/lib/libGL.so", "/usr/lib/libSDL.so", "/usr/lib/libGLU.so", "/usr/lib/libSM.so", "/usr/lib/libICE.so"]

关于使用 Regexp 的 Ruby Dir.glob 替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32125318/

相关文章:

ruby - rake db:create:ll 中#<Jquery::Rails::Engine:0x102530798> 的未定义方法 `namespace'

ruby - 如何实现 Watir 类(例如 PageContainer)?

javascript - 我无法使用动态路径名将文件路径中的图像附加到动态创建的 div 中

java - 如何指定在 .jar 中使用的运行时/进程的文件路径?

bash - 将变量中的 shell glob 扩展到数组中

python - python 中的 glob 函数,带有一个通配符

ruby-on-rails - 如何在 rails form_for 标签中添加一个空属性?

ruby-on-rails - Rails 5 Rspec ActionController::UrlGenerationError

c++ - 是否可以将文件路径传递给 Qt 中的 setStyleSheet()

python - 如何在 python 中更改 glob 模块的内部排序系统