LoginSignup
dongxinanbei
@dongxinanbei

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

grepした内容を保存する

自分用。
毎回調べなおしているため、grepでよく使う使い方まとめ

やりたいこと

  • 特定の文字列を含むファイルを見つけたい

使用コマンド grep

grep 正規表現 /directry/*

検索対象ファイルの作成

mkdir work_20211212
echo -e 'Apple\n123\n.dat' > work_20211212/sample01.dat
echo -e 'Orange\n200\n.csv' > work_20211212/sample02.dat
echo -e 'Grape\n400\n.excel' > work_20211212/sample03.dat

基本形 grep 正規表現 /directry/*

grep a work_20211212/*
実行結果
work_20211212/sample01.dat:.dat
work_20211212/sample02.dat:Orange
work_20211212/sample03.dat:Grape

大文字小文字の区別なく検索するオプション -i を加える。 grep -i 正規表現 /directry/*

grep -i a work_20211212/*
実行結果
work_20211212/sample01.dat:Apple
work_20211212/sample01.dat:.dat
work_20211212/sample02.dat:Orange
work_20211212/sample03.dat:Grape

検索文字列がはっきりしない場合 grep -i 正規表現.正規表現 /directry/

grep -i a*.p /directry/*
実行結果
work_20211212/sample01.dat:Apple
work_20211212/sample03.dat:Grape

検索結果を出力に出す場合 grep -i 正規表現.正規表現 /directry/ > /directry/filename

grep -i a*.p work_20211212/* > work_20211212/sample04.dat
実行結果確認
cat work_20211212/sample04.dat
work_20211212/sample01.dat:Apple
work_20211212/sample03.dat:Grape
0

一般的には、サブディレクトリ以下も再帰的に検索したいことが多いと思うので、grepに -r を付けることを検討してもいいように思いました。

また、もし標準的なコマンドの範囲にこだわらないのであれば、ag(The Silver Searcher)ripgrepなどのツールの使用を考慮してもよいかなと思います。これらのツールはより高速だったり、.gitignoreを見てくれたりと、状況によっては利点があります。

$ rg -l a work_20211212/
work_20211212/sample03.dat
work_20211212/sample02.dat
work_20211212/sample01.dat
0Like

コメントありがとうございます。
確かにサブディレクトリ以下も検索すると思いますのでオプションをつけた方が良いと思いました。
ツールについてもご教授いただきありがとうございます。
参考にさせていただきます。

0Like

Your answer might help someone💌