86
70

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-08-30

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
86
70
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
86
70

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?