获取ruby中文件的相对路径

时间:2014-09-12 05:31:22

标签: ruby

我有一个文件夹结构如下:

.
└── FolderA
    ├── a.cpp
    ├── b.cpp
    ├── c.cpp
    ├── FolderB
    │   ├── trial.cpp
    │   └── trial1.cpp
    └── FolderC
        └── srcFolder
            └── anothercppfile.cpp

我想将.cpp中存在的所有FolderA个文件的名称存储在数组中。我必须确保保留FolderA内的文件夹中存在的文件的相对路径。

我可以使用:

require 'find'
cpp_file_paths = []
Find.find('path/to/search') do |path|
  cpp_file_paths << path if path =~ /.*\.cpp$/
end 

但我没有得到相对路径。我不确定如何继续。最后一个数组必须是:

["a.cpp",
 "b.cpp",
 "c.cpp",
 "/FolderB/trial.cpp",
 "/FolderB/trial1.cpp",
 "/FolderC/srcFolder/anothercppfile.cpp"]

1 个答案:

答案 0 :(得分:6)

您可以使用Dir.glob

Dir.chdir('FolderA') do
  cpp_file_paths = Dir.glob('**/*.cpp') #=> ["a.cpp", "b.cpp", "c.cpp", "FolderB/trial.cpp", "FolderB/trial1.cpp", "FolderC/srcFolder/anothercppfile.cpp"]
end

请注意,路径是相对的,即它们不以/开头。将块传递给chdir可确保之后恢复当前目录(感谢Arup Rakshit)。