◀ANSI版開発トップへ
  • 3002 Grepで同じファイルを複数回検索するバグ
    • 3005 Re:Grepで同じファイルを複数回検索するバグ
    • 3408 RE: Grepで同じファイルを複数回検索するバグ
      • 3409 RE2: Grepで同じファイルを複数回検索するバグ
  • [3002] Grepで同じファイルを複数回検索するバグ もか 2003年08月12日 23:33

    Grepのファイル名指定を「*.* *.cpp」のように指定すると、
    hoge.cppのようなファイルを2回検索してしまいます。
    当然「*.*;*.*;*.*」とすれば、同じファイルを3回検索してしまいます。
    修正したほうがいいですよね?
    • [3005] Re:Grepで同じファイルを複数回検索するバグ wmlhq 2003年08月13日 14:36

      少なくとも二通りの方法があります。
      (1) ファイルのワイルドカードを複数のパスに展開した後、ユニークにする。
      (2) すでに検索したファイル(のパス)にフラグをつけて区別する。

      相対パスからどうやって同じファイルかを判定するのでしょうか。
    • [3408] RE: Grepで同じファイルを複数回検索するバグ みく 2004年02月11日 13:13


      除外ファイルとの合わせ技が可能。

      探索するフォルダ毎にチェック済みリストを作成する。
      WIN32_FIND_DATA.cAlternateFileName[14] をリスト管理(qsort,bsearch)
      することでデータ量を削減できる。

      ・先に除外ファイルを登録する(チェック済みにしてしまう)。
      ・対象ファイルをチェック済みリストと照合しながらGREP実行。
      チェック済みならスキップ。
      未チェックなら登録してGREP。

      以上をフォルダ毎に実行する。
      • [3409] RE2: Grepで同じファイルを複数回検索するバグ みく 2004年02月12日 21:37


        プロトタイプでテストしたところ、
        8.3形式のファイル名を持たない場合もあるので、cAlternateFileNameは使えませんでした。
        bsearch,qsort使うよりも単純に線形検索したほうが2倍速かったです。