处理目录中的所有文件:
Dir['**/*'].each do |filepath|
# filepath is a string path to the file or directory
# relative from the working directory of the script
end
有关详细信息,请参阅 Dir.[] 或 Dir.glob 的文档。
因此,如果您已经拥有find_text_in_file( some_word, filepath ),您可以这样做:
Dir['**/*'].select{|f| File.file?(f) }.each do |filepath|
find_text_in_file( some_word, filepath )
end
请注意,以上内容将以深度优先遍历的方式搜索文件。如果你想以广度优先的方式进行搜索,你可以改用这个:
files = Dir['**/*'].select{ |f| File.file?(f) }
files.sort_by{ |f| f.split(File::SEPARATOR).length }.each do |filepath|
find_text_in_file( some_word, filepath )
end
或者,如果您已经拥有find_word_in_directory( some_word, dirpath ),那么您可以这样做:
Dir['**/*'].select{ |f| File.directory?(f) }.each do |dirpath|
find_word_in_directory( some_word, dirpath )
end