我正在尝试读取指定目录中的每个文件。我想忽略隐藏文件。我找到了一种方法来做到这一点,但我很确定这是最低效的方法。
这是我试过的
Find.find(directory) do |path|
file_paths << path if path =~ /.*\./ and !path.split("/")[-1].to_s.starts_with?(".")
end
Run Code Online (Sandbox Code Playgroud)
这有效。但我讨厌它。
然后我尝试这样做,
file_paths << path if path =~ /.*\./ and path =~ /^\./
Run Code Online (Sandbox Code Playgroud)
但这对我没有任何回报。我在这里做错了什么?
你可以用 Dir
file_paths = Dir.glob("#{directory}/*")
Run Code Online (Sandbox Code Playgroud)
Dir#glob 文档:
返回通过扩展模式找到的文件名,模式是模式数组或模式字符串,作为数组或作为块的参数。
请注意,这不会匹配类 Unix 的隐藏文件(点文件)。为了将那些包含在匹配结果中,您必须使用类似“{ ,. }”。
根据@arco444,如果您希望递归搜索
file_paths = Dir.glob("#{directory}/**/*")
Run Code Online (Sandbox Code Playgroud)