文字列でその文字列を含むファイルを検索するコマンド

Feb. 14, 2019, 4:27 a.m. edited Oct. 9, 2019, 12:11 a.m.

#Linux  #Bash  #Mac 

たくさんのファイルとフォルダを含むあるディレクトリにて,その中すべてを検索対象に,ある文字列を含むファイルを探すコマンドは次のものである.

grep <文字列> -rn . --include=<ファイル名の特徴(特になければ*)>

例えば,

.
├── hoge
│   └── hoge.h
└── main.c

という構造をもち,それぞれのファイルが,

#include <stdio.h>
#include "hoge/hoge.h"

int main(void) {
    Hoge(10);
    Hoge(20);
    return 0;
}
#ifndef HOGE_H
#define HOGE_H

#include <stdio.h>

void Hoge(int value) {
    printf("hoge %d\n", value);
}

#endif // HOGE_H

であるとする.

このとき,Hogeを含むすべてのファイルを探したいときは,

$ grep Hoge -rn . --include=*
./hoge/hoge.h:6:void Hoge(int value) {
./main.c:5:    Hoge(10);
./main.c:6:    Hoge(20);

Hogeを含むcファイルを探したいときは,

$ grep Hoge -rn . --include=*.c
./main.c:5:    Hoge(10);
./main.c:6:    Hoge(20);

という形になる.覚えておくと色々便利.