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. ワイルドカードを使った曖昧な検索
ファイル名が正確に思い出せないこともありますよね。そんな時は「ワイルドカード」という便利な記号を使います。アスタリスク(*)を使うと、「〜で始まるファイル」や「〜という文字が含まれるファイル」をすべて探し出すことができます。
例えば、拡張子が.jpgの画像ファイルだけをすべて探したい場合は、次のように入力します。これにより、デジカメで撮った写真やダウンロードした画像を一気にリストアップできます。
find . -name "*.jpg"
./Pictures/ocean.jpg
./Pictures/mountain.jpg
./Downloads/profile.jpg
このように、*は「どんな文字が入ってもいいよ」という意味になります。初心者の方は、まずこの-nameと*の組み合わせを覚えるだけでも、日常の作業がぐっと楽になるはずです。特定のキーワードを含む資料を探す際などに重宝します。
4. ファイルの種類で絞り込む(-type)
Linuxには「ファイル」と「ディレクトリ(フォルダ)」の区別があります。名前が同じでも、それがファイルなのかフォルダなのかをはっきりさせて検索したい場合があります。そんな時に使うのが-typeオプションです。
ファイルを探したいときはf、ディレクトリを探したいときはdを指定します。これにより、余計な検索結果を省いて、より正確に目的のものにたどり着くことができます。パソコン初心者の方は、「fはfile(ファイル)の頭文字」「dはdirectory(ディレクトリ)の頭文字」と覚えると忘れにくいですよ。
find . -type d -name "backup"
./work/backup
上記の例では、名前が「backup」という「ディレクトリ」だけを表示しています。もし同じ名前にテキストファイルがあっても、それは無視されるので非常に効率的です。
5. ファイルの大きさで検索する(-size)
「パソコンの容量がいっぱいになってきたから、大きなファイルを見つけて消したい」と思ったことはありませんか?findコマンドを使えば、特定のサイズ以上のファイルだけを見つけることも簡単です。
サイズの指定には、メガバイト(M)やギガバイト(G)といった単位を使います。例えば、100MBより大きいファイルを検索する場合は、-size +100Mのように書きます。プラス記号は「それ以上」、マイナス記号なら「それ以下」という意味になります。大きな動画ファイルなどを整理したい時に非常に便利なテクニックです。
find /home/user/Videos -size +500M
/home/user/Videos/movie_01.mp4
このように、特定の場所を指定して大きなファイルを探し出すことができます。システム全体の掃除をしたい時など、管理者権限が必要な場所を探す際にも応用されます。
6. 更新日時でファイルを探す(-mtime)
「昨日編集したはずのファイル、どこに置いたかな?」という時に役立つのが-mtimeオプションです。これは「最後に内容を変更した日」を基準に検索を行います。数字の指定方法が少し特殊で、0なら24時間以内、1なら1日から2日前という意味になります。
特に最近作業したファイルだけを絞り込みたい時に強力な力を発揮します。多くのファイルが混ざっているプロジェクトフォルダの中から、直近で修正したソースコードやレポートを見つけ出すのに最適です。また、古いログファイルを抽出して整理する際にも使われます。
find . -mtime -1
./report.docx
./notes.txt
このコマンドは、過去1日以内(24時間以内)に更新されたファイルを現在の場所から探し出します。急いで作業の続きをしたい時に非常に重宝する機能と言えるでしょう。
7. 管理者権限でシステム全体を検索する
通常、自分の作成したファイル以外の場所(システムの設定ファイルなど)を検索しようとすると、権限がないためエラーが表示されることがあります。Linuxには「ルートユーザー」という、すべての操作を許可された特別な管理者が存在します。
システム全体から特定の重要な設定ファイルを探す場合などは、sudoというコマンドを先頭につけて実行します。これにより、普段は見ることができない重要な場所まで探しに行くことが可能になります。ただし、重要なファイルを誤って操作しないよう、慎重に行う必要があります。
find /etc -name "ssh_config"
/etc/ssh/ssh_config
この例では、システムの中心部である/etcフォルダの中から設定ファイルを探しています。管理者として操作していることを示すため、ターミナルの表示が変わっている点に注目してください。プログラミングやサーバー構築を学ぶ過程で、必ず必要になる操作の一つです。
8. 検索結果に対して操作を行う(-exec)
findコマンドの本当の凄さは、見つけたファイルに対してそのまま次の命令を実行できる点にあります。例えば、「見つけた古いファイルをすべて削除する」といった一連の流れを一つのコマンドで完結させることができます。これを実現するのが-execオプションです。
初心者の方には少し複雑に見えるかもしれませんが、定型文として覚えておくと非常に強力です。見つかったファイルを一つずつ手作業で処理する手間が省けるため、プロのエンジニアも頻繁に利用します。自動化への第一歩として、この仕組みを知っておくだけでも世界が変わります。
find . -name "*.log" -exec rm {} \;
このコマンドは、拡張子が.logであるファイルをすべて探し、それらを削除(rm)するという指示です。{}の部分に見つかったファイル名が順番に入り、\;で命令の終わりを伝えます。大量の不要ファイルを一瞬で片付けたい時に魔法のような効果を発揮します。
9. locateコマンドとの違い
Linuxには、ファイルを探すもう一つの方法としてlocateコマンドがあります。findは「今、実際にファイルを探しに行く」のに対し、locateは「あらかじめ作っておいたファイルリストのデータベースから探す」という違いがあります。
locateはデータベースを見るだけなので一瞬で結果が出ますが、新しく作ったばかりのファイルは見つけられないという弱点があります。一方でfindは、実行したその瞬間の最新の状態を反映してくれます。そのため、正確性を求めるならfind、速さを求めるならlocateという使い分けが一般的です。
初心者の方は、まずは汎用性が高く、どんな状況でも確実にファイルを見つけられるfindコマンドを使いこなせるようになることをおすすめします。パソコンの構造を理解する上でも、実際にフォルダを辿って探してくれるfindの仕組みを学ぶことは非常に有益です。