find -inameオプションの使い方を完全解説!初心者でもわかる大文字・小文字を区別しない検索
生徒
「先生、Linuxでファイルを探すときに、大文字と小文字を区別せずに検索したいんですけど、できますか?」
先生
「できますよ!そういう時は、findコマンドに-inameというオプションをつけると便利です。」
生徒
「-inameってなんですか?-nameと何が違うんですか?」
先生
「いい質問ですね。違いをしっかり理解することで、もっと効率よく検索できるようになりますよ。さっそく解説していきましょう。」
1. findコマンドとは?
findコマンドは、Linux(リナックス)でファイルやディレクトリを検索するための非常に便利なコマンドです。例えば、ある名前のファイルがどこにあるのかを調べたいときに使います。
検索する範囲(どのフォルダから探すか)と、検索条件(ファイル名、サイズ、更新日など)を指定して使います。
2. -inameオプションの意味と役割
-inameは、findコマンドで大文字と小文字を区別せずに名前で検索するためのオプションです。
例えば、Photo.jpgというファイルがあるときに、-name "photo.jpg"だと見つかりませんが、-iname "photo.jpg"なら見つかります。
つまり、"photo.jpg"、"Photo.jpg"、"PHOTO.JPG"などのどれでも一致させてくれるのが-inameなのです。
3. -nameとの違いを簡単に比較
-nameは大文字小文字を区別する検索、-inameは区別しない検索です。
具体的な比較例を見てみましょう。
例:ファイル「Photo.JPG」が存在する場合
-nameを使うと…
find . -name "photo.jpg"
(出力なし)
-inameを使うと…
find . -iname "photo.jpg"
./Pictures/Photo.JPG
このように、-inameは入力した文字列の大文字・小文字の違いを無視してくれるため、初心者でも検索ミスを減らすことができます。
4. よく使うfind -inameの書き方例
find -iname はとてもシンプルに使えます。構文は以下の通りです。
構文:
find [検索開始ディレクトリ] -iname "[検索したいファイル名]"
例1:カレントディレクトリから「test.txt」または「Test.TXT」などを探す
find . -iname "test.txt"
./Documents/Test.TXT
例2:ホームディレクトリから拡張子「.jpg」の画像ファイルを探す
find ~/ -iname "*.jpg"
/home/user/Pictures/Photo.JPG
/home/user/Downloads/sample.JpG
5. ワイルドカードとの組み合わせ
*(アスタリスク)は「何文字でも構わない」という意味のワイルドカードです。
この*を使えば、拡張子が同じファイルや、名前の一部だけを指定したいときに便利です。
例:「.log」ファイルをすべて検索(Log.LOGやdebug.Logも対象)
find /var/log -iname "*.log"
/var/log/sys.LOG
/var/log/debug.Log
6. -inameと他のオプションの組み合わせ
-inameは、他のオプションと組み合わせてさらに便利に使えます。
例:見つけたファイルをすぐに削除(確認なしで削除されるので注意)
find . -iname "*.tmp" -delete
例:検索結果を表示しつつ、更新日時が7日以内のものに絞る
find . -iname "*.log" -mtime -7
./logs/error.LOG
このように、-inameは単体でも便利ですが、他の条件と組み合わせることで、さらに強力な検索ツールになります。
7. よくあるミスと注意点
- スペルミス:
innameなどと書いてしまうとエラーになります。 - スペースの入れ忘れ:
find -iname"file.txt"はダメ。正しくはfind -iname "file.txt"です。 - パスの指定ミス:検索開始ディレクトリを正しく指定しないと見つかりません。
8. 他の似たLinuxコマンドとの違い
Linuxには他にもファイル検索ができるコマンドがありますが、find -inameは次のような特徴があります。
- ls:表示だけで、再帰的検索はできない
- locate:インデックスから探すので高速だが、インデックス更新が必要
- grep:ファイルの中身を検索するのに使う
つまり、find -iname は「ファイル名を再帰的に探す」ことに特化しています。