ファイル内の文字列を検索する方法
Windowsでファイル内の文字列を
検索する方法としては
findstrというコマンドが有ります。
コマンドプロンプトから
文字列検索をしたり、
バッチファイルに記述して
検索結果をファイルに
出力する方法です。
UNIXでいうとfind,grepを使う下記の
コマンドと同じような事でできます。
find 検索場所 -name ファイル名 -print | xargs grep 検索文字列
私はバッチファイルにして
主にソースファイルや
htmlファイルの修正箇所の確認、
ログの確認などに使っています。
日本語を検索する時は
文字コードの関係で
お勧めしません。
他の検索をお勧めします。
標準のコマンドなので
インストールしなくて
WindowsPCであれば、
調べる事が出来きます。
これは利点です。
バッチ化してファイルに
出力するようにしておけば
毎度コマンドプロンプトを
起動せずに文字列検索が
機械的にできます。
Windowsでは他には
PowerShellで文字列検索を
する方法も有ります。
簡単菜検索条件なら
findstrコマンドで
複雑な検索条件なれば、
PowerShell,VBスクリプトなどの
書きなれたスクリプトで
書いてしまう方が
早いように思います。
1.findstrの使い方
findstrコマンドを使って
指定したフォルダ内の
サブフォルダ内のファイル全てに
検索したい文字列が
含まれるファイルが
有るか調べる場合は、
下記のコマンドを実行します。
書式は、findstr [オプション] [検索する文字列] [探すファイル名]
例:
findstr /S /I /N "検索する文字列" *.*
オプションの説明
/S : サブディレクトリも検索する
/I : 文字の大・小を区別をしない
/N ; 行番号を表示
検索する文字列:ファイルに含まれる文字列をダブルクォートで囲みます。
正規表現も使えます。
*.* : 全てのファイルが対象
もし拡張子がlogの場合は
*.logと指定します。
ワイルドカートが使えます。
例:
c:\tmpと言うフォルダ内のファイルに
このファイル内にappleと言う文字列が
大文字小文字を区別せずに
含まれるか検索する時は、
>findstr /s /i /n "apple" c:\tmp\*.*
のようにコマンドを実行をします。
2.findstrで日本語検索
findstrで日本語を検索すると
検索するファイルの文字コードが
Shift-JIS以外の場合は、
上手くいきません。
検索対象のファイルの文字コードを
Shift-JISにすれば日本語の検索も
できますが、
日本語を検索する時は、
findstrコマンドを使わずに
他の検索方法を検討する方が
いいと思います。
日本語を検索すると見つかりません。
画面をクリックすると別画面で大きく表示されます。
検索するフォルダのファイルです。
文字コードがUTF-8です。
画面をクリックすると別画面で大きく表示されます。
ファイルの文字コードをShift-JISにします。
画面をクリックすると別画面で大きく表示されます。
再度検索します。
今度は見つかりました。
スポンサーリンク
3.findstrの実行結果をファイルに保存
検索結果は長くなると
コンソールでは確認が難しくなります。
そういう場合は、findstrの
実行結果をファイルに出力します。
下記のようにリダイレクトをするだけです。
findstr [オプション] [検索する文字列] [探すファイル名 > 保存するファイル名
実行するとコマンドプロンプトには何も
表示されませんが、
ファイルに出力されています。
4.findstr検索結果が文字化け
findstrの出力結果で
日本語の出力結果で
文字化けが起きる事が有ります。
ファイル名、行番号は分かるので、
気にしないくてもいいかもしれません。
findstrの実行結果をファイルに出力した後に
文字コードを変更できるテキストエディターで
開けば文字化けもせずに見る事もできます。
文字化けの原因は検索した
ファイルの文字コード(主にはUTF-8が原因)と
コマンドプロンプトの文字コード(Shift-JIS)が
一致していないために起きます。
コマンドプロンプトの文字コードと
検索対象のファイルの文字コードを
見比べて見ればわかります。
コマンドプロンプトは、
文字コードがデフォルトでは
Shift-JIS(932)です。
文字化けを直すために
コマンドプロンプトの文字コードを
変更するには
こちらのページを見てください。
文字コードをUTF-8に変更すると
コマンドプロンプトでも
文字化けが直ります。
ファイル内の文字列を検索する方法
(findstrコマンド)は
以上になります。
スポンサーリンク