AG
AG とは?
https://github.com/ggreer/the_silver_searcher
銀の検索者?
ack より速い検索ツールらしい。
ディレクトリでの検索でよく使われる。
sudo apt-get install silversearcher-ag
silversearcher-ag として apt-get でインストールできる。
AG で再帰的にディレクトリに対してファイルの中身を検索する
試しに source / shell の内部に
- hoge の文字列の入ったディレクトリ
- hoge の文字列がファイル名にのみあるファイル
- hoge の文字列がファイルの中身にのみあるファイル
- hoge の文字列がファイル名とファイルの中身両方あるファイル
- hoge の文字列ではないディレクトリに入った hoge の文字列がファイル名とファイルの中身両方あるファイル
これらを作成して ag で探してみる
~/source/shell
❯ ag hoge
ho-ge-inside-only.txt
1:hoge
hoge-fileName-and-inside.txt
1:hoge
NO-ho-ge-dirName/hoge.txt
1:hoge
単に ag hoge と打つと
現在いるディレクトリと、その配下のディレクトリに入っている
ファイルの中身の文字列が検索された。
ファイル名は検索されなかった。
階層の深い対象を無視する
- shell
- NO-ho-ge-dirName
- Depth2
- hoge.txt
このようにディレクトリの更に下にディレクトリを作った
~/source/shell
❯ ag hoge
NO-ho-ge-dirName/hoge.txt
1:hoge
hoge-fileName-and-inside.txt
1:hoge
NO-ho-ge-dirName/Depth2/hoge.txt
1:hoge
通常だと depth が 25 のために 25 段掘られるが
~/source/shell
❯ ag hoge --depth 1
hoge-fileName-and-inside.txt
1:hoge
NO-ho-ge-dirName/hoge.txt
1:hoge
depth を 1 にすると、2 層目は掘られない。
~/source/shell
❯ ag hoge --depth 0
hoge-fileName-and-inside.txt
1:hoge
0 にすれば、現在のディレクトリに直接入っているファイルだけを検索できる。
find
find でファイル名 or ディレクトリ名で検索する
https://www.howtogeek.com/112674/how-to-find-files-and-folders-in-linux-using-the-command-line/
~/source/shell
❯ find . -name \*hoge\*
./NO-ho-ge-dirName/hoge.txt
./NO-ho-ge-dirName/Depth2/hoge.txt
./hoge-fileName-and-inside.txt
./hoge-fileName-only.txt
./hoge-dirName
./hoge-dirName/hoge-fileName-only.txt
find を使えばファイル名 or ディレクトリ名で検索できる。
これも深い階層まで見てくれる。
ここでは正規表現の * はバックスラッシュの \ とセットで使い
*hoge で hoge で終わるファイル名
hoge*\ で hoge から始まるファイル名
\hoge\ で hoge が含まれるファイル名
として検索できる。
find でファイル名で検索する
❯ find -name \*hoge\* -type f
./NO-ho-ge-dirName/hoge.txt
./NO-ho-ge-dirName/Depth2/hoge.txt
./hoge-fileName-and-inside.txt
./hoge-fileName-only.txt
./hoge-dirName/hoge-fileName-only.txt
-type f をつけるとファイルのみがヒットして
find でディレクトリ名で検索する
❯ find -name \*hoge\* -type d
./hoge-dirName
-type d をつけるとディレクトリのみがヒットする。
まとめ
ag hoge ディレクトリ名(optional)
でディレクトリの中で再帰的に hoge をファイル内に含むファイルを検索できる。
find ディレクトリ名(optional) -name *hoge* -type f
でディレクトリの中で再帰的に hoge をファイル名に含むファイルを検索できる
find ディレクトリ名(optional) -name *hoge* -type d
でディレクトリの中で再帰的に hoge をファイル名に含むディレクトリを検索できる
Top comments (0)