find

このディレクトリ以下の*.pmから"sage"という文字列の入ったファイルを探す

grep '"sage"' `find * -name "*.pm" `

複数条件

複数条件も指定可能
and ・・・・ そのまま並べて記述する。

 ex)	find . -name a.out -atime +30 -print

or ・・・・ \( 条件 -o 条件 \)

 ex)	find . \( -name a.out -o -name core \) -print

http://www.tokaido.co.jp/syoko/handyman/find.html

否定

たとえば、/tmp にあるファイルで、所有者がleslie でないファイルを検索するには、次のコマンドを使用します。

 $ find /tmp \( ! -user leslie \)

http://docs.hp.com/ja/B2355-90813/ch02s18.html

find . \! -user foo -print

http://stackoverflow.com/questions/5927489/looking-for-files-not-owned-by-someone

下位階層も含めてのgrep

find どこか -print | xargs grep 何か /dev/null

http://oshiete1.goo.ne.jp/qa1178518.html

ある文字列を含むファイルを探す方法

あるサイズ以上

find  /var/vpopmail/domains -size +1000k -print

findで指定サイズより大きいもしくは小さいファイルを探す – CentOSサーバ構築術 文具堂

/var/vpopmail/domains 以下の1M以上のファイル

-exec {} \; と -exec {} + の違い

-exec {} \; と -exec {} + の違い

まず \; の 頭についてるバックスラッシュはこれがないとセミコロンがシェルのコントロール文字列だと判別されるためについてるだけです。
そして肝心の違いですが -exec {} \; は find で見つかったそれぞれのファイルを別々にコマンドに渡して、 -exec {} + は全部まとめて渡します。

https://qiita.com/ironsand/items/0aed2ffca295706cab69