• ベストアンサー

grepについて

Freebsdにおいてgrepというコマンドがあると思いますが、このgrepで特定の階層にある特定のファイルを探すことはできるのでしょうか? あるファイルの中に存在する、特定の文字などを検索するやり方は分かるのですがファイル名を検索しようとしても、やり方が分からずできません。 それとも、もともとgrepコマンドは、あるファイル内に存在する文字を検索するためのコマンドなのでしょうか?? その辺りも、よく分かりません。 他に、grepはこういう時に便利!!みたいな例があれば教えてくださいませ。 ご回答の程、よろしくお願い致します。

  • rrr88
  • お礼率66% (79/119)

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

  • ベストアンサー
  • freetaka
  • ベストアンサー率53% (106/197)
回答No.1

特定ファイルを検索する場合はfindコマンドを使用します FreeBSDだけではなく 他のUNIX系OSでも利用頻度の高いコマンドですので ぜひ使い方を覚えておきましょう 2つほど参考URLを載せておきます http://x68000.q-e-d.net/~68user/unix/pickup?find http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=find&dir=jpman-6.0.0%2Fman§=0 grepのおおよその機能はおわかりのようなので こちらへ参考URLを載せておきます ぜひ読んでみてください grepの場合は正規表現を覚えることで かなり強力なフィルタリングをかけることができますので こちらもぜひ熟知しておきたいコマンドです http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=grep&dir=jpman-6.0.0%2Fman§=0

rrr88
質問者

お礼

早々のが解答ありがとうござます。 分かりました☆ 初心者ですが、使いこなせるようになりたいですね。

その他の回答 (2)

  • freetaka
  • ベストアンサー率53% (106/197)
回答No.3

ちょっと回答まちがいました^-^; findは不特定のファイルを検索する場合ですね つまりはファイルの場所がわからないけど 名前はわかっている場合 まあ、参考URLみていただければわかります

  • x1va
  • ベストアンサー率26% (802/3006)
回答No.2

> 特定の階層にある特定のファイルを探す 特定の階層というのがよく分からないんだけど、目的のファイルが格納されているディレクトリが分かっているという意味ならlsだろうし、分からなければfindでは。 どちらも基本的なコマンドだから、Unix系OSのコマンド集のサイトなり書籍を読んで覚えておいた方が良いでしょう。 > もともとgrepコマンドは、あるファイル内に存在する文字を検索するためのコマンドなのでしょうか?? そういうことです。

rrr88
質問者

お礼

早々のご回答ありがとうございます。 そうですね、階層が分かっていればlsが使えますね。 質問の書き方間違えました。。 ありがとうございました☆

関連するQ&A

  • linuxのgrepコマンドに関して

    linuxのgrepコマンドに関して ファイルの中から、1や2という文字が単独で存在する行を検索したくて grep 1 file名 とするのですが、そうすると11や23など文字が単独ではなく、含まれている行が出力されます。 含まれる、ではなく文字そのものを検索するにはどうしたらよいでしょうか?

  • grepの使い方

    "A.lst"と"B.lst"の2つのファイルがあります。 ともにディレクトリ階層の一覧が記述されています。 2つのファイルを比較して、A.lstのディレクトリ階層の文字列を 含む行を、B.lstから抽出して、リダイレクトで出力するには、 どういうコマンド操作になるのでしょうか。 特定の文字列ならば単純に、cat B.lst | grep moziretsu > sample.lst でいいわけですが、この文字列がA.lstファイル内に複数行あり、 それを順にgrepするにはどうすればいいのかがわかりません。 シェルもただいま勉強中です。 よろしくご教授願います。

  • grepの出力結果の保存

    LinuXのgrepコマンドに関する質問です。 既存のファイルからgrepコマンドで特定の文字列が含まれた行だけを抽出し、その行数を数えるという課題です。 行数を数えるのでwcコマンドを使おうと思ったのですが、wcコマンドは「wc (ファイル名)」という使い方をしますよね。 ということは、grepコマンドで抽出した結果をファイルに保存しなくてはならないのですが、やり方がわかりません。

  • grepコマンドでの文字列検索

    grepコマンドについて質問です。 grepコマンドでCSVファイルを参照し、ある項目に特定の文字列でないものがあれば、そのファイル名を取得する処理をしたいと思っています。 つまり、ある項目を$strとすると $str <> 'aaaaaa' という処理をgrepで行おうと考えています。 現状では、 grep -l '^[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^(aaaaaa)]' ファイル名 等を試していますが、[^(aaaaaa)]だと一文字目しか判別できていないようです。[^a{6}]などもうまくいきません。 何かいい方法があれば教えて頂きたいと思います。 宜しくお願いします。

  • 圧縮ファイルのgrepソフト

    階層的に複数圧縮されたファイル内の文字列を解凍せずにgrepするソフトを探しています。 現在、圧縮ファイルの閲覧ソフトとして、Explzhを使っています。これはこれで解凍せずに閲覧できて便利なのですが、ファイル内の文字検索する機能がありません。(と思って使っています) grepソフトとしては秀丸を使っていますが、これは圧縮ファイル内のgrepには対応していません。(と思っています) そこで、階層的に複数圧縮されたファイルを下位階層まで含めて全て全文文字検索かけてくれて結果を表示、選択すれば当該ファイルの当該文字位置にジャンプ表示するようなソフトを探しています。 どなたか良いソフトをご存じであれば教えて下さい。 基本フリーウェアを探していますが、情報としてはシェアウェアも含めて情報頂けると助かります。 場合によっては購入も考えますので。(金額次第ですが。。。)

  • ディレクトリ内より特定の文字列を検索する際に関しまして

    文字列の検索に関して質問させていただきます。 あるファイル内から、 特定の文字列を探す際は、 grepを使用して検索をしています。 また、全体の中からファイル名を探す際なども、 findを使って、 探したりしているわけなんですが、 そうではなくて、 あるディレクトリ内にある 複数のファイル内全てから、 「特定の文字列が含まれているか?」を 探すコマンドってあるのでしょうか? 例えばこんな感じです。 ディレクトリAにファイルが10個あるとします。 この10個のファイルの中のどこかに、 「FOO_HEADER」という文字列が 存在しているか?を確認したいときに、 そう思いました。 今までなら、grepを使って、 1つずつファイル内を探したりしていました。 検索サイトで探してみたのですが、 キーワードが悪いのか、 どうも見つけることが出来ませんでした。 もしご存知の方がいらっしゃいましたら、 アドバイスの程お願い致します。 ■OS:Fedora9 ※ 通常はbashを使用しています。

  • UNIXコマンド "grep" "find" の使い方教えて下さい。

    1)以下(1)、(2)を検索したいとします。  (1)"wrk_str"という文字列の記述があるファイル名  (2)tmp_file.c という名前のファイル名 2)ディレクトリ構成が以下になってるとします。  /home/users/複数のディレクトリが存在/複数のディレクトリが存在/複数のファイルが存在 3)/home/users/ 配下に検索したい文字列、ファイルがあるとした場合、どのように   探せばいいでしょうか?   /home/users/配下で得に条件なしでgrepすると、"Arg list too long"(量が多い?)の   メッセージが出て、検索できませんでした。 UNIXコマンドに詳しい方、宜しくお願いします。 それ以外にも、色々検索方法知っていたら教えて下さい!!

  • FreeBSDでWindowsの秀丸エディタみたいなgrepする方法?

    FreeBSDでWindowsの秀丸エディタみたいなgrepする方法があったら教えて下さい。 たとえば、秀丸ではこんな風にgrepしてます。 検索する文字列:hoge 検索するファイル:*.c *.h 「大文字/小文字の区別」にチェック 「単語の検索」にチェック 「サブフォルダも検索」にチェック どなたか分かる方、よろしくお願いします。

  • grepにマッチした正規表現の文字列を取得したい

    grepにマッチした正規表現の文字列を取得し、マッチした文字列を 一覧で取得したいのですが、方法がわかりません。 ※例 grep [0-9][0-9][0-9][0-9][0-9] 検索ファイル名 > 出力ファイル名 不明点あればお知らせください。 よろしくお願いします。

  • vimのgrepの使い方がよくわかりません

    WindowsXPでvimを使い始めたのですが、 grepのやり方がよくわかりません。 一応、unixでgrepやviは最低限レベルでは使えます。 やりたいこととしては、 指定のテキストから、特定の文字列を検索して、 結果を一覧で表示させて、 その中からどれか選んで、その行へジャンプして表示する ということがやりたいです。 で、たぶんgrepでやれるんじゃないかと思って質問しています。 grepに関する簡単な解説を読むと、 (esc)したあと、 :grep hoge hoge.txt でできる、というようなことが書いてあるのですが、 上記で実行すると、 :!findstr /n hoge hoge.txt > c:xxxxxxxx 2>&1 (1 of 1): 1:hoge と出ますが、ここから何をしていいかわかりません。 grepの機能としてはここで終わりなのでしょうか? ここから結果の行へジャンプしたりできないのでしょうか? また、grep対象のファイルって毎回自分で入力するのでしょうか? たとえば、現在編集しているファイルを対象としたい場合、 現在のファイル名となる変数みたいものはあるのでしょうか?