【问题标题】:Search for a string in files in subdirectories在子目录的文件中搜索字符串
【发布时间】:2012-05-22 08:27:19
【问题描述】:

我需要找到所有包含<some_word> 的字符串。有 MAIN 目录,我们必须在其中搜索,并且可以有文件和其他目录(带有文件)。它必须进入一个目录-检查那里的所有文件<some_word>,返回主目录-输入另一个目录-检查那里的所有文件,返回主目录......等等。当主目录中只有文件时,我没有任何问题......但不知道如何使用目录......请帮助我。

【问题讨论】:

    标签: ruby string file search directory


    【解决方案1】:

    处理目录中的所有文件:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-03
      • 2018-05-05
      • 1970-01-01
      • 1970-01-01
      • 2014-12-19
      • 2017-02-11
      • 1970-01-01
      相关资源
      最近更新 更多