LoginSignup
54
53

More than 3 years have passed since last update.

ターミナル上での検索とかgrepとか

Last updated at Posted at 2018-03-07

はじめに

ターミナル上で頻繁に使うfindgrepですが、何度使っても文法を忘れるので一回まとめることにしました。

TL;DR

あるディレクトリ下の、特定のパターンのファイル名に対してgrepしたい場合は以下のコマンドで解決できます。

grep <pattern> --include=<filename> -r
※2019/8/8更新。@tsuyoshi_cho さん、コメントありがとうございます!
(参考リンク: https://boxnos.hatenablog.com/entry/20071003/1191351963

findxargsを使った方法もあります。
find <dirpath> -name <filename> | xargs grep <pattern>

以下では、findgrep、そしてxargについての簡単な解説をします。

find

検索コマンド。
指定したディレクトリ配下を再帰的に検索する。

# 基本形
find <dirpath> -name <name>

# 例
find ~/ -name *.py # HOMEディレクトリ以下の.pyファイルを検索

他にも、ファイルサイズとかで検索可能だが説明は割愛。

grep

ファイルの中を検索するコマンド。

# 基本形
grep <pattern> <path> # patternは正規表現を使用可能。

# 例
grep pd.read_csv *.py # カレントディレクトリに存在する.pyファイルについて、pd.read_csvを検索
grep pd.read_csv ./work_directory/src # 指定したディレクトリに存在するファイルについて、pd.read_csvを検索

拡張子を指定しつつ、ディレクトリ内を再帰的に検索したいとき

grepでは、拡張子を指定しつつ、ディレクトリ内を再帰的に検索することはできません。
しかし、拡張子を指定しながらgrepしたいということは頻繁にあります。

そこで、xargsを利用します。

# 基本形
find <dirpath> -name <filename> | xargs grep <pattern>

# 例
find ./work_directory/src -name "*.py" | xargs grep pd.read_csv # 指定したディレクトリ以下の.pyファイルについて、pd.read_csvを検索する

まとめ

  • grep <pattern> --include=<filename> -r
  • find <dirpath> -name <filename> | xargs grep <pattern>

を覚えて帰ろう。

54
53
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
54
53