情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

なぜか検索できない文字でWindowsファイル検索する謎テクニック

Windows (248) Windows 7 (56) Windows 8 (36) Windows 8.1 (58) Windows-ファイル検索 (4)

Windowsで、ファイル名に「☆」(他にも「-」「+」「(」「(2)」など)が入っているファイルを検索する方法、わかりますか?」 実は、ただ検索欄に「☆」と入力しても、検索結果にすべてのファイルが表示されてしまいます。変な検索方法を調べて、いろいろなパターンを試し続けた結果、謎テクニックで回避できると分かったのですが、Windowsファイル検索テクニックの世界にはかなり独特の世界が広がっていると同時に、ろくな資料が見当たらないことも分かりました。というわけで今回は、「☆」の検索を通じて、「なぜか検索できない」を解決するテクニックを紹介します。

正解例を見て、衝撃を受けたり、「???」という感想を共感してもらえたら嬉しいです

関連:「(2)」を検索する方法はこちら→「Windowsファイル検索で 数字1文字 や 括弧付き数字 を検索する方法(謎テクニック応用編)

なぜか検索できない

試しに、次の図のように、Windows 8.1上に、「A.txt」や「A☆.txt」というファイルを用意しました。

search-star-test-files

さて、「☆」が含まれるファイルを検索するために、検索ボックスに「☆」と入力した結果がこちらです

search-star-simple-search

何も変わっていない!!!ということが分かります。

そう、なぜか「☆」のような、それほど特別でない文字で検索したときに、なぜか検索できないのです。これが、「あ」なら問題ありません。

もしここで「A☆」と検索してみると、次のような結果になります。

search-star-search-a-star

なぜか「A」だけ認識され、「☆」が無視されています

逆に言えば、選ばれた文字でしか検索できない?

実は、「☆(星マーク)」でなくても、「○(丸)」や「△(三角形)」もうまく行きません。

さらには、「、(句点)」「。(読点)」でもダメです。

半角でも、「+」ですら検索できません。

正直、検索できる文字列がかなり限定されていることがわかります。

今回は、その制限を大幅緩和して、いろいろな文字で検索できるようにします

今回のお題

こんなとき、どうやって「☆」を検索しますか?」を今回のお題にします。

いろいろな検索結果(失敗)

いろいろな発想で、「☆」を検索してみましょう。

「"☆"」

ちょっと詳しい人の発想で「ダブルクオート(")」をつかって「"☆"」で検索するとこうなります。

search-star-search-quote-star-quote

全く効果はありません

「\☆」

「エスケープ」という言葉を知っている人は「バックスラッシュ(\)」を使って「\☆」と検索するかも知れません(どうして画像だと円マークなの、は略)

search-star-search-backslash-star

「\」は意図した動作をせず、検索結果なしになります。

その他

同様に、いろいろな発想で「*☆*」「*☆」「~☆」「'☆'」などとしても、全く効果がありません

その場しのぎで「☆.txt」としても、やはりダメです。「名前:☆」でも一緒です。そもそも「☆」の扱いが謎なのです

普通の発想ではダメ

正直、何も知らずに、Google検索などで見かけるような検索方法を使っても、進展はまるでありません

私がたどり着いた結果をこれから紹介しますが、正直、今までの経験からあまりにかけ離れていて、意味が分かりませんでした

その衝撃や、「???」が共感してもらえたら嬉しいです。

いろいろな検索結果(まぁまぁ)

さて、では検索に成功する例を紹介します。

もう、どうしてうまく行くか説明しようにも、ちゃんとした資料が見つからず、ちゃんとした仕組みの説明ができないのですが、海外フォーラムの「~(チルダ)」を検索するテクニックを参考に組み立ててみると、こうなりました。

「~*☆*」

「~(チルダ)」で開始して、アスタリスクで挟んだ☆を配置します。その結果がコチラ。

search-star-search-tilde-ast-star-ast

見事成功です。意図通りの検索結果が表示されます

ただし、ワイルドカードの効果でファイル名全体がハイライト表示になってしまっており、ちょっと惜しい感じです。

「~"*☆*"」

同様に、「~"*☆*"」も同じ結果になります。結果は正しいのですが、ハイライトが惜しい。

「~"*☆」

ここで分かってきたかと思いきや、意外なことに「~"*☆」でも同じ結果になります。

「~*☆」

ここで「~*☆」としてみると、こうなります。

search-star-search-tilde-ast-star

検索結果が正しい一方で、今度はハイライトがありません。

一番良いやりかた:「~=」を使う

実はこのあたりを単純に弄っていても進歩がありません。というわけで、次の、また別の謎テクニックが出てきます。

「~=☆」

「~=(チルダイコール)」の後ろに「☆」をつけた「~=☆」で検索してみます。

search-star-search-tilde-equal-star

見事、完璧な検索結果を得ることができました

※補足:画像のように、Windows 8.1では、これだけでOKです。しかし、Windows 7の場合は、「名前:~=☆」として、検索対象をファイル名にすると明示しないと、うまく検索できません。「~"*☆*"」は、Windows 7でも同じように表示されます。

謎テクニック チルダイコール

この「チルダイコール」は、いろいろな「なんで検索できないの?」な場面で使えるので、覚えておいて損はないと思います(おまけ情報:全角チルダイコール(~=)でも検索できます)

この「~=」の意味については、「contains(含む)」の意味だとWindowsのページに書かれているのですが、普通の検索もcontainsみたいなものじゃなかったの?という気がしてしまいます(たぶん、検索ワードの前後の扱いが特別だからcontainsとは違ってあくまで全体一致、ということなのかな)。どちらにしても、これで突然検索できない文字が使えるようになる意味は全く分かりません。ただ、うまくいくテクニックとして、書いておくことにしました

応用編:「括弧付き数字」を検索する。

「☆」はシンプルな例なので、もうちょっとあるあるな例を紹介しておきます。

「4」や「(4)でを検索してみる「~=」の応用編を設置しました→「Windowsファイル検索で 数字1文字 や 括弧付き数字 を検索する方法(謎テクニック応用編)」 「(4)」を検索するには、「~=」に加えて、ちょっとした工夫が必要です。

まとめ

Windowsで、「どうして検索できないんだ!」と思ったときは、この「~=」のことを思い出してみてください。謎テクニックですが、かなり強力です。

参考

関連

コメント(4)

  1. 111
    2014年3月7日(金) 03:04
  2. えがた
    2014年3月7日(金) 12:56

    ~=は「単語の一部に含まれる」という意味のcontainsですね。

    想像ですが、Windows検索の標準動作は単語単位なのでしょう(ヨーロッパ圏では普通のこと)。その場合、単語間の空白はもちろん、カンマやピリオドなどの記号は無視しているのでしょう(単語単位の検索であれば自然な処理だと思います)。日本語の「☆」が無視されるのも、単語を構成しない記号とみなされているためでしょう。

    ~=を使うと、単語という区切りを利用せず、テキストすべての文字を検索対象とする動作になるのでしょう。その結果、記号類も対象となり、記載の結果となると思われます。

    試しに☆の変わりにカンマ(,)の有無で同じことをしてみると、同様の結果になりました。

    日本語ではあまり使いやすくない仕様ですね。

  3. すばる
    2015年6月15日(月) 09:31

    同じような事例で検索できず困っていたので大変助かりました。
    有用な記事を公開してくださってありがとうございました。

  4. 万国あのにますさん
    2015年7月8日(水) 10:59

    ~=といえばperl の正規表現に似てる。今度実験してみよう。
    情報提供ありがとう。

新しいコメントを投稿