搜索具有特定模式的文件

Searching for files with a specific pattern

我正在尝试使用模式在目录中查找特定文件

假设我有用户 ID - 101

这是我的文件

101
101_2
101_5
10111
103
10125
101_6

我正在尝试形成一个只给我文件的正则表达式模式 (101,101_2,101_5,101_6)

我正在尝试以下模式

^101_?\d+$

但它似乎根本没有选择任何文件。如果我出于某种原因删除 ^.only 101_6 匹配。

编辑:

我正在使用 rails/ruby 在特定目录中查找文件。所以像

Dir.glob(location).grep("^101_?\d+$")
 do something
end

你的问题不是特别清楚,但我猜你想要匹配 101 后跟可选的下划线和数字的任何内容。如果是这样,请使用正则表达式 ^101_?\d$。如果您想要 101 后跟一个数字或下划线以及一个或多个数字,请使用 ^101(_\d+|\d)$

编辑

正如 OP 在评论中提到的,101 也应该匹配。更新后的正则表达式为 ^101(?:_?\d)?$

如果 location 不是当前文件夹,glob 返回的路径将包含 dirname 和 basename :

Dir.glob('./*').select{ |f| File.basename(f) =~ /\A101(_\d+)?\z/ }.each do |f|
  puts f
  # do something with f
end