• ベストアンサー

特定の文字を含まないファイルを検索

たくさんのファイルの中から、特定の文字を含まないファイルを検索したいのですが、良い方法はないでしょうか? #正規表現を使ったgrepなんかでもできるものですか?

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

  • ベストアンサー
回答No.3

処理系にもよると思いますが、grepは検索した結果、見つかったかどうかで異なる戻り値を返しますから、これを調べたらよいと思います。 シェルスクリプトなら、 for file in * do grep -q "HOGE" $file if [ $? -eq 1 ] then echo $file fi done

その他の回答 (3)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.4

GNU の grep を導入すれば、-L というオプションが使えます。

参考URL:
http://www.linux.or.jp/JM/html/GNU_grep/man1/grep.1.html
  • arata
  • ベストアンサー率49% (139/279)
回答No.2

grepがおのぞみであれば、 grep -c 条件 ファイル名 で、検索をするとファイル中の条件に一致した 行数(Countのcですね)を返しますので、 ・特定の文字を含む条件で検索 ・結果が0のものが、含んでいないファイル では駄目ですか? ------------------------------------- (たとえばこんな感じ) # grep -c abc *txt test1.txt:0 test2.txt:1

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.1

特定の文字をファイル名に含まないということなのかファイルの内容に含まないということなのか、 OSやシェルは何かということで話は変わってくると思いますけど、とりあえず、 例えばUNIXのcshでファイル名に 'x' を含まないファイルを見つけるということなら  find . \! -name '*x*' -print で見つけられます。(詳細はman findで調べて下さい。)

s-holmes
質問者

補足

すみません、土下座 m(_ _)m。 ファイル名でなく、ファイルの内容に特定の文字を含まないファイルの検索方法でした。 説明のしかたがあいまいで申し訳ありません。

関連するQ&A

  • 特定の文字列を含む行だけ削除する方法?

    いつもお世話になっています。 Unixであるテキストファイルから、 特定の文字列を含む行(レコード)だけを 削除する方法を教えてください。 現在、grepを使って、いろいろ試しているのですが、 正規表現で、 ”***”を含まない行(レコード)だけを 切り出すとう正規表現の説明が見あたりません。 "^**"は、**以外の文字を検索できるようですが、 文字列に対しては、使えません。 grep以外の方法でも良いのですが、 なるべくシンプルにできる方法がありましたら 教えてください。 宜敷お願いします。

  • ある特定のディレクトリの特定の文字を含むファイルを検索するには

    Debian Linuxでbashスクリプトを記述しています。 特定のディレクトリ(1つの階層)にある ".abc"で始まる隠しファイルの一覧と、 それぞれのファイル内容を取得したいのですが ・サブディレクトリも検索してしまう。  find の-pruneやmaxdepthがききません。 lsで記述しなおしましたが ・結果を確認すると、6回同じ内容を記述しています。  正規表現が正しくないと思い書きなおしていますがうまくいきません。 target=/var/test filename=$(ls -a ${target} -name | grep '\.abc' | grep -v "~") kugirimoji="------" for i in $filename ; do echo $i cat $i echo $kugirimoji done どこを直せば、単一ディレクトリの特定ファイルの一覧を検索できるでしょうか。 同じ内容を複数回吐き出すのは、やはり正規表現が間違っているからでしょうか。 ぜひ教えて下さい。 どうぞよろしくお願い致します。

  • 全ディレクトリの全ファイルから特定の文字を検索

    全てのファイル、サブディレクトリの中身も含めて検索する コマンドはありますでしょうか。下記のようにしても反応がなく、 ためしにmojiと書いただけのファイルを置いてもHITせず、 どうしたら全部のファイルの中身から特定の文字列を 探し出せますでしょうか less /* |grep moji

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

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

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

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

  • 特定の文字を含むファイルを検索するツール

    ファイル検索をするツールはたくさんありますが、 特定の文字を検索して、その文字を含むファイルを表示させる ツールはありますか? よろしくお願いします。

  • Grepする際の検索方法について

    こんばんは。 さくらエディタのGrep検索で次のような検索をしたいと思っていますが どのように行えば良いでしょうか? 例)「コンピュータ」と「コンピューター」の文字列が混在するファイル、フォルダから「コンピュータ」のみを検索する 普通に「コンピュータ」で検索すると当然ながら「コンピューター」もヒットしてしまいます。「コンピュータ」となっているもののみ抜き出したいのです。 正規表現を使えば解決できると、なんとなく分かるのですが方法を探してみましたが正規表現自体難しいので理解できませんでした。 宜しくお願い致します。

  • ファイル内の複数の特定文字列を抽出する方法

    ファイル内の複数の特定文字列を抽出する方法 linuxで、あるファイル内の特定のパターンに 該当する文字列の抽出方法を教えてください。 やりたいこと・前提条件 (0)linuxといいながら実はCygwin(タブン影響しないと思う) (1)特定のパターンはファイル内のどこに出現するか分からない (2)特定のパターン文字列中には改行は含まない。つまり必ず同一行内 (3)特定のパターンはファイル中に0回以上出現する (4)まったく同じ文字列は省きたい (5)特定のパターンは同一行中に複数回出現することもあり、すべて抽出する とりあえず、以下のコマンドを書きましたが不十分です。 grep -E "${PATTARN}" log.txt | sed -r "s/^.*(${PATTARN}).*$/\1/g" | sort -u これだと、(0)~(4)までの希望は実現できました。 (5)が未実現です。 JavaとかJavaScriptとかvbsとかなら正規表現にヒットした複数の文字列を 連続的に取り出して処理する方法は思い浮かぶのですが、 linuxコマンドの範囲だとどうすればいいかよくわかりません。 (5)を実現する方法。これを教えてください。 参考情報としてサンプルファイル内容と正規表現パターン・ 得たい結果も書いておきます。よろしくお願いします。 ◎参考 ○log.txt -------- RASCAL-1, RASCAL-123 [RASCAL-456] *** ** * *** [RASCAL-1] RASCAL-456 RASCAL-45 -------- ○PATTARN=RASCAL\-[0-9]{1,5} ○得たい結果 RASCAL-1 RASCAL-45 RASCAL-123 RASCAL-456

  • 正規表現でファイルの末尾の特定の文字以外を探し出す。

    Devasというフォルダ内の複数のファイルを正規表現の置き換えができるソフトを使って、フォルダ内の複数のファイルの末尾の行の初めの文字が特定の文字(この場合は<)以外のファイルを探しだしたいのですが、 正規表現で\z^[^<]としても出てきません。 秀丸などでファイルを見ると、ファイルの末尾が ----------------------- <br> [EOF] ----------------------- となっているファイルは無視し、<以外の文字のファイル、例えば、 ----------------------- (あいうえお) [EOF] ----------------------- などとなっているファイルを探し出したいのです、 [EOF]の部分がファイルの末尾になるから上の正規表現では出来ないのでしょうか?だとすればどのようにすればよいのでしょうか?

  • MacOS 10.4で、特定の文字列を含まないファイルを検索する方法が

    MacOS 10.4で、特定の文字列を含まないファイルを検索する方法が見つからなくて困っています。 Dreamweaverで管理しているサイトの中から、ソースにJavascriptの一部として「document.location.protocol」という文字列含まないHTML書類だけを見つけ出したいのですが、DreamweaverでもFinderでのファイル検索でも「を含まない」という検索方法が見つかりません。 OS10.5ならNot検索の方法があるようなのですが、私は現状では10.4なので…。 何か方法は無いでしょうか?

    • ベストアンサー
    • Mac