findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
生徒
「Linuxでファイルを探したいときって、どうすればいいですか?」
先生
「Linuxではfindコマンドを使うことで、ファイルやディレクトリを検索できますよ。」
生徒
「それって難しい操作じゃないですか?初心者でも使えますか?」
先生
「大丈夫!簡単な例から説明していきます。一緒に覚えていきましょう。」
1. findコマンドとは?
findコマンドは、Linuxでファイルやディレクトリを探すための基本的なコマンドです。「どこに保存したかわからないファイルを見つけたい」「特定の名前をもつファイルを探したい」「最近更新されたファイルだけを探したい」といったときに非常に役立ちます。
Windowsの「検索ボックス」のようなイメージですが、findはターミナル(黒い画面)で使う文字だけの命令です。その代わり、とても速くて正確です。サーバー管理やプログラミングの現場では欠かせないツールとなっています。Linux初心者の方がまず覚えるべき重要コマンドの一つと言えるでしょう。
2. 基本の書き方
findコマンドの基本的な書き方は、以下のようになります。
find [検索する場所] [検索条件]
たとえば、「現在のフォルダから名前がmemo.txtのファイルを探す」場合は、以下のようになります。
find . -name "memo.txt"
./Documents/memo.txt
ここで.は「今いる場所(カレントディレクトリ)」を意味します。-nameは「名前で検索する」という意味のオプションです。このコマンドを打つと、コンピュータの中を隅々まで調べて、一致するものの場所を教えてくれます。コマンドライン操作に慣れていない方でも、この形さえ覚えればすぐに使いこなせるようになります。検索する場所を「パス」と呼び、条件を「オプション」と呼ぶことも覚えておきましょう。
3. Linuxシェルの基本的な動作の流れを知ろう
コマンドを使いこなすために、まずはLinuxのシェル(Shell)がどのように動いているかを知ることが大切です。シェルとは、私たちが入力した命令をコンピュータ(カーネル)に伝えてくれる「通訳者」のような存在です。私たちがキーボードで「find」と打ち込んでエンターキーを押すと、シェルがその意味を解釈し、コンピュータに「ファイルを探して」と依頼します。そしてコンピュータが処理した結果を、再びシェルが受け取って画面に表示してくれるのです。
この一連の流れを理解すると、なぜ「コマンド」という文字の入力が必要なのかが分かってきます。ターミナルという黒い画面(ソフトウェア)の中で、このシェルがずっとあなたの命令を待っている状態なのです。この仕組みがあるおかげで、マウス操作よりも複雑で細かい指示をコンピュータに素早く出すことが可能になります。プログラミング未経験の方には最初は難しく感じるかもしれませんが、「人間とコンピュータの橋渡し役」がいるんだな、とイメージしてみてください。
4. 名前でファイルを検索する(-nameオプション)
一番よく使うのが、ファイル名で検索する方法です。特定のファイル名を探すときは-nameを使います。もし大文字と小文字を区別せずに探したい場合は-inameを使うと便利です。例えば、「Report.txt」も「report.txt」も両方見つけたい場合に役立ちます。
find /home/user/Documents -name "*.jpg"
/home/user/Documents/vacation.jpg
/home/user/Documents/profile.jpg
上記の例で使っている*(アスタリスク)は「ワイルドカード」と呼ばれ、「どんな文字でも良い」という意味になります。つまり"*.jpg"と書くことで、ファイル名の最後が「.jpg」で終わるすべての画像ファイルを探し出すことができるのです。これは非常に強力な機能で、大量のデータの中から特定の拡張子を持つファイルだけを一瞬でリストアップできます。初心者の方は、まずこのワイルドカードの使い方をマスターすることをおすすめします。
5. ファイルの種類で絞り込む(-typeオプション)
findコマンドは、探しているものが「ファイル」なのか、それとも「フォルダ(ディレクトリ)」なのかを指定して検索することもできます。これには-typeオプションを使います。普通のファイルを探すならf(fileの頭文字)、フォルダを探すならd(directoryの頭文字)を指定します。
find . -type d -name "backup"
./work/backup
このコマンドを実行すると、名前が「backup」という「フォルダ」だけが表示されます。もし同じ名前のファイルがあっても、それは無視されます。このように条件を組み合わせることで、検索の精度をぐんぐんと高めることができるのです。パソコンの中には数万、数十万というデータが入っていますが、この絞り込みを使えば目的のものへ最短距離でたどり着けます。ディレクトリ構造が複雑になればなるほど、この機能のありがたみが分かってくるはずです。
6. ファイルのサイズで検索する(-sizeオプション)
「パソコンの容量がいっぱいになってきたから、大きなファイルを探して消したい」というときには、サイズを指定して検索しましょう。-sizeオプションを使います。例えば、100MBより大きいファイルを探す場合は+100M、逆に小さいファイルを探す場合は-10Mのように書きます。
find /var/log -size +50M
/var/log/huge_log_file.log
単位には、k(キロバイト)、M(メガバイト)、G(ギガバイト)などが使えます。これを活用すれば、意図せず巨大化してしまったログファイルや動画ファイルなどを見つけ出すのがとても簡単になります。システム管理の現場では、ディスク容量不足を解消するためにこのコマンドが頻繁に使われます。一般のユーザーでも、データの整理整頓をするときに非常に役立つテクニックですので、ぜひ覚えておいて損はありません。
7. 更新日時で検索する(-mtimeオプション)
「昨日編集したはずのファイル、どこに置いたっけ?」というときには、更新日時を指定して検索できます。-mtime(modification timeの略)オプションを使います。これは「何日前」という指定方法になります。例えば、24時間以内(0日前)に更新されたファイルを探すなら-mtime 0とします。
find . -mtime -1
./today_work.txt
./config/settings.conf
-1のようにマイナスをつけると「〇日以内」、+7のようにプラスをつけると「7日より前(古いもの)」という意味になります。バックアップ作業で「最近のファイルだけをコピーしたい」ときや、古い不要なデータを一括で削除したいときに重宝します。日付で検索できる機能は、ファイルの管理を劇的に効率化してくれます。初心者のうちは数字の指定に戸惑うかもしれませんが、何度か試してみると直感的に理解できるようになります。
8. 検索結果に対して命令を実行する(-execオプション)
findコマンドの真骨頂は、見つけたファイルに対してそのまま別の命令(削除や移動など)を実行できることです。これには-execオプションを使います。少し上級者向けの内容に見えますが、使いこなせるとプロのような操作が可能になります。
find . -name "*.tmp" -exec rm {} \;
このコマンドは、「拡張子が.tmpのファイルを見つけたら、すべて削除(rm)する」という命令です。{}の部分には見つかったファイル名が入り、\;は命令の終わりを意味します。一括で作業ができるため非常に便利ですが、間違ったファイルを削除しないように注意が必要です。最初は削除する前に、まず検索だけして中身を確認する癖をつけておきましょう。この自動化の仕組みこそが、Linuxというシステムの素晴らしいところです。
9. locateコマンドとの違い
Linuxでファイルを探すコマンドには、findの他にlocate(ロケート)というコマンドもあります。初心者の方はどちらを使えばいいか迷うかもしれません。findは「今まさにコンピュータの中を歩き回って探す」のに対し、locateは「あらかじめ作っておいたファイル名リスト(データベース)から探す」という違いがあります。
locateはリストを見るだけなので非常に高速ですが、新しく作ったばかりのファイルはリストに載っていないため見つけられないことがあります。一方、findは常に最新の状態を調べられるため、確実性が高いです。基本的にはfindをメインで使い、場所が全く見当もつかないファイルを爆速で探したいときにだけlocateを補助的に使うのが賢い方法です。それぞれの特徴を理解して使い分けられるようになると、Linuxマスターへの道がグッと近くなります。
10. ルート権限での実行に注意(sudo)
システム全体(他の人のフォルダやシステムの深い場所)を検索したいときは、権限が足りずに「許可がありません(Permission denied)」と表示されることがあります。その場合は、管理者権限(ルート権限)で実行する必要があります。コマンドの前にsudoをつけることで、特権を持って検索を行うことができます。
find /etc -name "ssh_config"
/etc/ssh/ssh_config
管理者として実行すると、普段は見ることのできない重要な設定ファイルなども検索対象になります。ただし、管理者権限は何でもできてしまう強力なパワーを持っています。特に先ほど紹介した-execと組み合わせて削除(rm)などを行う際は、細心の注意を払ってください。不適切な操作をするとシステムが壊れてしまうリスクもあります。まずは一般ユーザーとしての操作に慣れ、必要なときだけsudoを使うように心がけましょう。