grep → ファイル内から指定した文字列を含む行を検索する。
find → ディレクトリツリーの中から指定した文字列を含むファイルを検索する。

■seibulions.txtから「”aaaa”または”bbbb”」を含む行を検索。

grep “aaaa\|bbbb” seibulions.txt または
grep -e “aaaa” -e “bbbb” seibulions.txt

■seibulions.txtから「”aaaa”かつ”bbbb”」を含む行を検索。

grep “aaaa” seibulions.txt | grep “bbbb”

■/home/seibu配下のディレクトリツリーのテキストファイルの中から、”aaaa”を含むファイルを検索。
find /home/seibu/ -name \*.txt -print0 | xargs -0 grep “aaaa”

※xargsコマンドは、標準入力から引数を読み込み指定コマンドを実行するため、
findコマンドで見つかった全てのファイルのパスを’一度に’grepコマンドに渡してくれる。

※execを使った場合↓、’ファイル数分’grepコマンドが実行されるので時間がかかる。
find /home/seibu/ -name \*.txt -exec grep “aaaa” {} \;

※ファイル・ディレクトリ検索ならlocateコマンドの方が高速。

locate seibulions.txt と
find . -name ‘seibulions.txt’ -print は同意。

※FreeBSD 7.1でも、find -xargs、find -execともに使えるようです。

No related posts.