web-dev-qa-db-ja.com

Windows 7ですべてのファイルコンテンツを(再帰的に)検索するにはどうすればよいですか?

Windows 7でallファイルの内容を(再帰的に)検索するにはどうすればよいですか?この例では、xxxを検索するために、Windowsエクスプローラーのcontent:xxxボックスでSearch settingsコマンドを使用しています。これは動作しません:

この検索がどのように壊れているかの例として、検索中のテキストを含むorg.Eclipse.wst.common.componentファイルが表示され、Windows 7は結果でそれを返していません。既知のテキストベースのファイルタイプのみを検索していると思います。 すべてのファイルを検索する方法?探しているものをすべて見つける必要があります。

追伸DOSベースのソリューションがある場合は、これも受け入れます。 dir /s /bfindstrを使用したバッチファイルを作成できます。

編集:再帰検索の必要性に注意してください。

25
Xonatron

ここに私のthree fileDOSソリューションがありますが、誰かが持っているなら、私はまだ適切なWindows 7ソリューションを探しています:

1. search.bat

@ECHO off
FOR /r %%a IN (*.*) DO CALL process.bat %%a

allファイルを再帰的に検索し、それぞれに対してprocess.batを実行します。

2. process.bat

@ECHO Off
ECHO "%1" >> output.txt
TYPE "%1" | FINDSTR /i "search_string_here" >> output.txt

一部のファイルはバッチファイルコードを壊さないため、各ファイルの名前を引用符で出力し、検索文字列search_string_hereを見つけて、検索文字列が見つかった行全体を出力します。

3. output.txt(サンプル出力)

search_string_hereに格納されているproject_name JavaプロジェクトでD:\project_name\を検索し、検索されたすべてのファイルと、結果がある場合は結果を表示する、次の形式の出力が含まれます。

"D:\project_name\.classpath" 
"D:\project_name\.project" 
    <name>search_string_here</name>
"D:\project_name\content_search_all_files.bat" 
"D:\project_name\output.txt" 
    <name>search_string_here</name>
"D:\project_name\pom.xml" 
...

上記のsearch_string_hereが見つかりましたが、<name>search_string_here</name>ファイルでD:\project_name\.projectの全行が見つかりました...他の結果もあります。

繰り返しますが、もし誰かがそれを持っているなら、私はまだ適切なWindows 7ソリューションを探しています。

警告:「行が長すぎます」エラー。 FINDSTRはバグがあるかもしれません:

どうやら、FINDSTR <grep、あなたが知らなかったかのように。同じ入力が別のファイルで使用された場合に再現されないFINDSTRのエラーを掘り下げた記事を次に示します。

明らかに、「行が長すぎます」というのは、さまざまなエラーに対するキャッチオールメッセージです。 FINDSTRにはいくつかの問題があります。少し前に、FINDSTRはわずかに役立つと言った。今日以降、それは思っていたよりもさらに役に立たないと思います。 - http://blog.mischel.com/2008/10/14/copying-large-files-on-windows/

4
Xonatron

「user3245549」は正しい:

「forループ」およびネストされたbatファイルに関する上記の回答はすべて、ジャンボジャンボです。必要なのは、「findstr」を使用するだけです-例:

C:\temp> findstr /S /C:"/work" * | more   <-- this will find the string "/work" in any file

または

C:\temp> findstr /S /C:"/work" "*.*" | more 

または

C:\temp> findstr /S /C:"/work" * > results.txt

または

C:\temp> findstr /S /C:"/work" "*.*" > results.txt

注:アスタリスクの前後の「二重引用符」は省略できます。Stackoverflowのエディターがピリオドの両側のアスタリスクを削除するため、これらを配置します。注:私の知る限り、検索する「文字列テキスト」の前後に引用符が必要です。

37
joe

構文を覚える必要のないGUIベースのソリューションを探している場合は、Notepad ++を試してください。ディレクトリ内のファイルの検索(ファイル内の検索)、特定の拡張子への制限(フィルター)、サブフォルダー内の検索を実行できる検索メニューがあり、リスト内のアイテムをクリックするだけでそのファイルを開きます編集。

32
Bill - K5WL

コマンドプロンプトウィンドウからfindstrコマンドを使用します。

/ sは再帰的な検索を提供します

/ iは大文字小文字を無視します

8
user3245549

これはコマンドプロンプトで実行できますが、構文は非常に冗長です

for /r %a in (\*.*) do find "search_text" %a

これはWindows 7で動作するようになりました(余分なドットは削除されました)

3
Pauline