ストーリー
findとは
find = ファイルやディレクトリを検索するコマンド
指定したディレクトリ以下を再帰的に探索し、条件に合うファイルを見つけます。
基本的な使い方
構文
find 検索開始パス -name "ファイル名"
例
find . -name "readme.txt"
.= 現在のディレクトリから検索開始-name= ファイル名で検索"readme.txt"= 検索するファイル名
準備: サンプル環境を作る
cd ~
mkdir -p find-practice/project/{src,docs,tests}
cd find-practice
# サンプルファイルを作成
touch project/README.md
touch project/src/main.py
touch project/src/utils.py
touch project/src/config.json
touch project/docs/guide.md
touch project/docs/api.md
touch project/tests/test_main.py
touch project/tests/test_utils.py
# 確認
find project -type f
実際にやってみよう
ファイル名で検索
# README.mdを探す
find project -name "README.md"
出力:
project/README.md
複数のファイルを検索(ワイルドカード)
# .pyファイルをすべて探す
find project -name "*.py"
出力:
project/src/main.py
project/src/utils.py
project/tests/test_main.py
project/tests/test_utils.py
.mdファイルを検索
find project -name "*.md"
出力:
project/README.md
project/docs/guide.md
project/docs/api.md
検索開始パスの指定
カレントディレクトリから
find . -name "*.py"
特定のディレクトリから
find project/src -name "*.py"
ホームディレクトリから
find ~ -name "*.txt"
ルートから(注意:時間がかかる)
find / -name "filename" 2>/dev/null
2>/dev/null でエラーメッセージ(権限エラーなど)を非表示にします。
大文字小文字を区別しない検索
-iname オプション
# README.md、readme.md、Readme.md などすべてマッチ
find project -iname "readme.md"
ディレクトリだけを検索
-type d オプション
# ディレクトリだけを検索
find project -type d
出力:
project
project/src
project/docs
project/tests
ファイルだけを検索
-type f オプション
# ファイルだけを検索
find project -type f
ハンズオン
# 1. 練習用フォルダに移動
cd ~/find-practice
# 2. すべての.pyファイルを探す
find project -name "*.py"
# 3. すべての.mdファイルを探す
find project -name "*.md"
# 4. testsディレクトリ内だけを検索
find project/tests -name "*.py"
# 5. ディレクトリだけを表示
find project -type d
# 6. ファイルだけを表示
find project -type f
findの便利な点
再帰的に検索
find はサブディレクトリの中も自動的に検索します。
# project配下のすべての階層を検索
find project -name "*.py"
ワイルドカードが使える
| パターン | 意味 |
|---|---|
*.py | .pyで終わるファイル |
test_* | test_で始まるファイル |
*config* | configを含むファイル |
よくあるエラーと対処法
”Permission denied” が大量に出る
# エラーを非表示にする
find / -name "filename" 2>/dev/null
「そのようなファイルはありません」
- 検索開始パスが存在するか確認
- ファイル名のスペルを確認
まとめ
| コマンド | 説明 |
|---|---|
find . -name "*.txt" | カレントから.txtを検索 |
find . -iname "*.txt" | 大文字小文字を区別しない |
find . -type d | ディレクトリだけを検索 |
find . -type f | ファイルだけを検索 |
チェックリスト
-
findで特定のファイルを探せた - ワイルドカード
*.pyを使えた -
-type dと-type fの違いを理解した
次のステップへ
findの基本はマスターできましたか?
次のセクションでは、findのさらに便利なオプションを学びます。 ファイルサイズや更新日時での検索など、より高度な条件指定ができるようになります!
推定読了時間: 30分