• 締切済み

grep 正規表現の扱い方 特定のファイル郡のみを指定するには?

ディレクトリのファイルをgrepを使った正規表現で指定したいのですが、 /hoge/temp[001-999].php のように、hogeディレクトリにあるphpファイル全てを含め、なおかつ、 /hoge/foo/temp[001-999].php のように、hoge/fooディレクトリにあるphpファイルを全て含めない正規表現の書き方を教えてほしいです。 正規表現にあまり詳しくなく、思いつくものといっても「hoge/.*.php」くらいで、当たり前ですが双方のディレクトリが含まれてしまいます・・・。 もう一つ、質問です。 /hoge/ ディレクトリにあるファイル全てを含め、なおかつ /hoge/foo/ ディレクトリにあるファイルは全て含めない という指定の仕方も教えてほしいです。 分かる方がいましたら、お手数ですがぜひ教えてください。よろしくお願いします<(_ _)>

  • JIITE
  • お礼率48% (13/27)

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

一般論だと, 「正規表現で『~を含まない』と指定するのは面倒」(要するに可能性を全列挙するしかないから) で終わり. 「当該ディレクトリ直下」まで手を抜いていいなら [^/]* とするのが簡単.

JIITE
質問者

補足

自己解決しました。 hogeディレクトリに存在するphpファイルを全て指定 hoge/[:alnum:]*.php hogeディレクトリに存在するファイルを全て指定 hoge/[:alnum:]* 回答ありがとうございました。

関連するQ&A

  • grepで特定のディレクトリを除外して再帰検索するには?

    /hoge下のサブディレクトリ、ファイルで文字列mojiretsuを検索したいのですが 特に/hoge/foo下は除外して検索する場合には grepコマンドはどう記述したらいのでしょうか? # grep -lr mojiretsu /hoge だと/hoge/fooも検索されてしまいますよね。

  • ディレクトリの正規表現について

    ディレクトリの正規表現について いつもお世話になっております。 例えば以下のようなディレクトリ構造で「_hoge」や「_hogehoge」の部分を 抜き出したいと考えております。 (必ず「exe」の配下にディレクトリとなっております。) /exe/_hoge/index.php /exe/_hogehoge/index.php PHPの正規表現でどのようにしたらよろしいでしょうか。 ご教示よろしくお願いいたします。 [環境]  PHP:5.1.6

    • ベストアンサー
    • PHP
  • 正規表現について

    Perlの初心者です。 正規表現の指定方法がよくわかりません。 ディレクトリー内の該当するCSVファイルの抽出をしたいのですが、 "xyz20050105*.csv"に該当するデータすべてを抽出したい。 下記のように、詳細に指定して該当するCSVのファイル名を取得したいのですが、これだとディレクトリー内がすべて表示されてしまいます。 @FTPlist = grep ("$head$year$mon$mday*.csv", readdir(DIR)); どのように指定すればよいのでしょうか?

    • ベストアンサー
    • Perl
  • 正規表現について

    下記期待する結果通りになる正規表現を考えておりますが、 うまくいきません。教えて下さい。 期待する結果 hoge(fuga sumomo) マッチする hoge(foo(sumomo)) アンマッチする sumomoが()で囲われている hoge(bar()sumomo) マッチする 作成した正規表現 hoge\([^(]*sumomo[^)]*\) 実際の結果 hoge(fuga sumomo) マッチ hoge(foo(sumomo)) アンマッチ hoge(bar()sumomo) アンマッチ ←予想と違う

  • 正規表現でファイル名の抽出

    社内の掲示板に属するWebアプリケーションを制作しております。 複数のファイルをアップロードするために、<input type="file" ...> で得たファイルのパスを一時的にリストに表示させる仕様になりました。 そこで、javascriptの正規表現オブジェクトで次のようなフルパスから ファイル名のみを抽出することを考えました。  a: c:\hoge.txt  b: \\foo_server\foo_dir\hoge2.txt a,bから、それぞれ hoge.txt hoge2.txt を得るために、/[^\\].*/によって \\を取り除いた後で/\\.*\..*$/ によって欲しい文字列が得られると考えましたら文字列どころか何も 得られませんでした。 /[^\\].*/までは動いているようです。 オブジェクトの使い方が誤っていると考えているのですが、どの様に 扱えばよいのか皆目見当がつかなくなりました。 大変お手数ですが、ご教示願います。

  • PHPの preg_grep関数(正規表現)について

    こんにちわ, 今PHPで 配列$valに val[0]-> 'HOGE' val[1]-> 'HOGE' val[2]-> 'Time' val[3]-> 'Total' val[4]-> 'Time' val[5]-> '->' val[6]-> '00:00:02' と入っているときにpreg_grep関数を使用して,$time配列にval[6]の時間のフォーマットをした文字列を入れたいのですが, $time = preg_grep("/(..):(..):(..)/",$val6); としても,$time[0]にはうまく入りません。 どこが悪いのでしょうか。 ちなみに,正規表現のいいHPなどがあればついでに教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 正規表現

    PHPのプログラミングの勉強をしています。 正規表現を使って?の1文字をマッチさせたいのですが http://hogehoge.com/?hoge=hoge などの/?の場合は正規表現でマッチさせないようにしたいのです。 宜しくお願い致します。

    • 締切済み
    • PHP
  • さくらエディタでGrep検索する時の正規表現

    さくらエディタでGrep検索する時の正規表現 「ABC」が含まれていて「DEF」が含まれない行という正規表現は どのように指定すればよいのでしょうか?

  • awkの正規表現について

    ディレクトリ名とファイル名の一覧ファイルがあり、その中から特定ディレクトリの1階層下のディレクトリ名とファイル名を取得したいのですが、うまく抽出できません。 ディレクトリ名とファイル名の一覧ファイル(dir.txt)は /foo/ /foo/bar/ /foo/bar/a.txt /foo/bar/sub/ /foo/bar/sub/x.txt /foo/var/ /foo/var/b.txt /usr/ /usr/bar/ で「/foo/」指定すると /foo/ /foo/bar/ /foo/var/ を抽出し 「/foo/var/」を指定すると /foo/var/ /foo/var/b.txt を抽出したいです。 この場合、awk '$1 ~ /^\/foo\/bar\// {print}' dir.txtとすると /foo/bar/ /foo/bar/a.txt /foo/bar/sub/ /foo/bar/sub/x.txt が抽出されてしまいます。 どのような書き方をすれば1階層下のディレクトリとファイルのみを 抽出できるのでしょうか?

  • 複数指定ファイルのjgrep

    jgrepを使っているのですが、約50本のソースがディレクトリに散らばっているので、このままだとトップからサブディレクトリも含む検索を行うと非常に時間がかかるし、1本ごとにディレクトリ指定するのは手間なので、これを50個いっぺんに指定して、jgrepのように一覧表示させる気の効いたソフトはありますか? または、windows用のコマンドラインgrep (正規表現対応)で、 結果をファイルに落として、これをxyzzyでタグジャンプできれば それらしきことが実現できると思いますが、そもそもwindwos版grepがあり、xyzzyはタグジャンプできるのでしょうか?

専門家に質問してみよう