Bash findコマンド - 高度なファイル検索テクニック
条件の組み合わせ、結果に対するコマンド実行、-execとxargsの使い方、実践的な検索パターンを含むfindコマンドの高度な使い方をマスターします。
File Operations
詳細な説明
高度なfindコマンドの使用法
findコマンドはUnixツールキットで最も強力なツールの1つです。基本的なファイル検索だけでなく、複雑な論理式、複数のアクション、他のコマンドとの統合をサポートします。
条件の組み合わせ
# AND(暗黙的)
find . -name "*.js" -type f -mtime -7
# OR
find . \( -name "*.js" -o -name "*.ts" \) -type f
# NOT
find . -not -name "*.test.js" -name "*.js" -type f
コマンドの実行
find . -name "*.log" -exec rm {} \; # ファイルごとに1回実行
find . -name "*.js" -exec grep -l "TODO" {} + # バッチ実行(効率的)
find . -name "*.tmp" -print0 | xargs -0 rm # xargsを使用
サイズベースの検索
find / -type f -size +100M # 100MB以上のファイル
find . -type f -empty # 空のファイル
find . -type d -empty # 空のディレクトリ
時間ベースの検索
find . -mtime 0 # 過去24時間に変更
find . -mtime +30 # 30日以上前に変更
実践的なレシピ
find /var/log -name "*.log" -mtime +90 -delete # 古いログの削除
find . -type f | sed 's/.*\.//' | sort | uniq -c | sort -rn # 拡張子別ファイル数
ユースケース
高度なfind使用はディスククリーンアップの自動化、セキュリティ監査(world-writableファイルやSUIDバイナリの検出)、コードベースのメンテナンス(未使用ファイル、gitにコミットされた大きなバイナリの検出)、ログローテーションスクリプト、複雑な基準でファイルを選択する必要があるバックアップスクリプトに不可欠です。