Help us understand the problem. What is going on with this article?

【ド素人メモ】findとgrepとワイルドカードの違いとか。(UNIXコマンド)

More than 5 years have passed since last update.

UNIXコマンドでファイル探すときにfindとかgrep使うのですが、シェルのワイルドカード*とgrepの中で使う正規表現のワイルドカード*が違うこととかしらなかったので、その辺に関するメモ。初心者。

findの基本的なこと

find . -name '*.php'

などと書きます。

* -> 任意の0文字以上。
? -> 任意の一文字。

なので、

find . -name '???.txt'

などとすれば、3文字のファイル名のものを探してくる。

ちなみに、

find . -name *.php 

などと書くと、unknown primary or operator というようなエラーなのかなんなのか、よくわからないのが出てきます。なので、ちゃんと''もしくは""で囲んでおきます。

grepの基本的なこと

grep piyo hoge.txt

などと書きます。

正規表現を使うと、

grep 'p.*o' hoge.txt

と書きます。検索する文字列が単純な文字であれば''""は無くても大丈夫です。けど、正規表現や検索文字の間にスペースなどが入る場合は、それらで囲む必要があります。

grepのオプション

-e -> piyoもしくはfugaを含む行を検索するときに使う。

grep -e piyo -e fuga hoge.txt

-E -> 正規表現の+とかが使えるようになる。(正規表現の拡張)

grep -E 'p.+o' hoge.txt

逆に正規表現を使えなくするには、-Fを使う。

findとgrepを併用する。

どのファイルか分からないけど、Hogeディレクトリ配下で、piyoという文字列を含んでいる部分とそのテキストファイルを知りたい。

find ~/Hoge -name '*.txt' | xargs grep piyo
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away