フォルダ名やファイル名に含まれるスペース文字を回避する
例
| 1 | $ find . -name '*.c' -print0 | xargs -0 grep 'pattern' | 
説明
デフォルトの区切り文字はスペース文字。-print0 指定で区切り文字をNUL文字に変更する。xargsの区切り文字指定をあわせてNUL文字にすることで、フォルダ名やファイル名に含まれているスペース文字を区切り文字と誤認することを回避する。
検索ファイル名を xargs で受け取り、パイプライン後のコマンドに渡す
| 1 | $ find . -type f -name '*.jpg' -print0 | xargs -0 -J % cp % ~/img/ | 
- -Jで置換文字を指定する。"%" がファイル名に置き換えられる。
検索ファイル名を引数にして exec で実行する。
| 1 | $ find . -type f -name '*.jpg' -exec cp {} ~/img/ \; | 
- {}: ファイル名に置き換えるられる。
- 
    \;: 単体実行。cpコマンドをファイル名毎に1回1回実行する。- cp foo.jpg ~/img/
- cp bar.jpg ~/img/
- cp baz.jpg ~/img/
- …
 
アクセス制限のエラーを表示させない。
失敗例
| 1 2 3 4 5 | % find . -name '*.asta' find: ./Pictures/写真ライブラリ.photoslibrary: Operation not permitted find: ./Desktop: Operation not permitted ... | 
解決法 : 標準エラー出力をnullデバイスへリダイレクトする。
| 1 | % find . -name '*.asta' 2>/dev/null | 
ファイル名やフォルダ名の大文字/小文字を区別しない
例
| 1 | $ find . -iname '*.c' | 
説明
-inameを指定することで "foo.c" と "foo.C" の両方が検索される。
複数条件を指定する
例
| 1 | $ find . \( -name '*.c' -o -name '*.h' \) | 
説明
-o または -or で複数の条件を括弧で括って連結することができる。
ファイルのみを検索対象とする
例
| 1 | $ find . -type f -name 'project.*' | 
- f: ファイル
- d: ディレクトリ
タイムスタンプで検索する
例. 30日以前に更新されたファイルを検索
| 1 | $ find . -ctime -30 -type f | 
例. 30日以降に更新されたファイルを検索
| 1 | $ find . -ctime +30 -type f | 
特定のフォルダを除外してファイル一覧を作成する
| 1 | $ find . -type d -name '.git' -prune -o -type f -print | 
オプションの意味をわかりやすくするために括弧で括った例
| 1 | $ find . \( -type d -and -name '.git' -and -prune \) -or \( -type f -and -print \) | 
ディレクトリ ".git" を除外(prune) し、ファイルをプリントする