検索結果が0件だと、「それは存在しない」と読んでしまいがちです。

実際に言っているのは、今回見た範囲で、この書き方では見つからなかった、ということだけです。

黙って0件になる3つのケース

ツールが一部のファイルを飛ばしている場合。バージョン管理に付いている検索は、バイナリと判定したファイルを標準で飛ばします。その判定が先頭の数バイトだけで決まることもあります。1行に1件ずつデータを積んだログファイルはバイナリと誤判定されやすく、ファイルごと飛ばされても何の知らせもありません。

範囲が思っているものと違う場合。除外ルール、パスの指定、デフォルトの検索の深さ。どれか1つでも、検索が半分しか走っていないことがあります。

探している書き方が、中身の書き方と違う場合。漢字のファイル名はリンクの中ではパーセントエンコードされますし、設定ファイルの中の識別子には引用符やエスケープ文字が付いていることがあります。文字どおりに探せば、文字どおりのものしか見つかりません。

危うく消すところだった

あのときの0件は、「このファイルを参照しているものはないので、削除していい」という根拠に使われかけていました。

実際にはあるログファイルが参照していて、そのログファイルがバイナリとして飛ばされていただけでした。0件を信じて削除していたら、まだ使われているものを消していたことになります。しかも、誰かが気づくのはずっと先だったはずです。

いまのやり方

0件が出たら、結論にはせず、もう一度確かめる合図として扱います。

何かが存在しないと言うには、原理の違う2つの方法でどちらも見つからないことを確かめます。1つは文字どおりに照合する方法。もう1つは角度を変えた方法で、たとえばファイルの中身をそのまま全部出力してから絞り込み、ツールが自分で行っている判定を通さないようにします。

あることの証明は、1つ見つかれば足ります。ないことを証明するには、隅々まで見る必要があります。