• ベストアンサー

ファイルの中の文字を検索してパスとファイル名と行を調べたいのですが

現ディレクトリからどこかにある(カレントディレクトリもしくは下の階層)ファイルの中の文字を探して、パスとファイル名と行番号を表示させるにはどうすればいいのでしょうか (例)例 現Cドライブ→下のフォルダ→下のフォルダ→下のフォルダ→xxx.txtの中に含まれる文字 abc(10行目)を探したい 結果 c/フォルダ/フォルダ/フォルダ/xxx.txt 10行目 findとgrepでなんとかできそうな気がするのですが どなたかわかる方教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • e_watt
  • ベストアンサー率71% (25/35)
回答No.3

No.2 です。 > では *.txtは どの位置に挿入すればいいのでしょうか(txtファイルから検索する場合) findでファイル名を限定する場合は find . -name "*.txt" -print -exec ... のようにします。 (「*」のようなワイルドカードを含む場合は、 「"」や「'」で囲みます)

参考URL:
http://www.google.co.jp/search?hs=WSZ&hl=ja&c2coff=1&client=firefox-a&rls=org.mozilla%3Aja-JP%3Aofficial&q=find+%22-name
bonbontarou
質問者

お礼

色々やってみたところ find -iname '*.txt' -exec grep -Hn --colour 'abc' {} \; で 思っていた結果が出せませた。 大変役に立つコマンドだと思います。 ありがとうございました。

その他の回答 (3)

  • e_watt
  • ベストアンサー率71% (25/35)
回答No.4

No.3 の参考URLは長すぎて切れてしまいました。失礼しました。 「検索すると、もっと詳しい使い方を説明しているサイトがあります」 という程度の意味です。 # googleで、検索語に[find -name -exec] のように書いてしまうと、'-'(マイナス記号)のせいで # name や exec を 含まない(!) ページという指示になってしまうので、 # これらは「"」で囲んで[find "-name" "-exec"]と入力して # 検索してください。

  • e_watt
  • ベストアンサー率71% (25/35)
回答No.2

使っている grep で、以下のオプションがサポートされていれば... (man がインストールされていれば、man grep で確認; Cygwinではすべてサポートされているようです) $ grep -r -H -n abc *  -r, -R, --recursive; または -d recurse : 階層をたどる  -H または --with-filename : パス名を表示  -n または --line-number : 行番号を表示 -n くらいしかサポートされてなくて find を使うなら、(パス名は各行には出ないけど) $ find . -print -exec grep -n abc {} \; てな感じでしょうか。

bonbontarou
質問者

補足

grep -r -H -n abc *で問題解決できました。 $ find . -print -exec grep -n abc {} \; では *.txtは どの位置に挿入すればいいのでしょうか(txtファイルから検索する場合)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

findstr /s /n "abc" c:\*.txt

bonbontarou
質問者

お礼

有難うございました

bonbontarou
質問者

補足

DOS だとこの方法が 使えるのですね ありがとうございます

関連するQ&A