【ITニュース解説】Master the "find" command in Linux: A practical cheatsheet
2025年09月05日に「Dev.to」が公開したITニュース「Master the "find" command in Linux: A practical cheatsheet」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
Linuxの`find`コマンドは、ファイル検索だけでなく分析や自動化にも役立つ強力なツールだ。この記事は、初心者でも`find`コマンドをマスターできるよう、名前や種類、作成日時、サイズでファイルを検索する方法や、見つけたファイルに対して操作を実行する方法を、具体的なコマンド例と共に分かりやすく解説している。
ITニュース解説
システムエンジニアを目指す上で、Linux環境での操作は避けて通れない道であり、その中でも「find」コマンドは非常に強力で頻繁に利用されるツールの一つである。多くの初心者はその基本的な検索機能しか知らないかもしれないが、実際にはファイルの検索だけでなく、システムの状態分析や日々の運用作業の自動化にも大いに役立つ。このコマンドを使いこなすことは、効率的なシステム管理の第一歩と言える。
「find」コマンドの基本的な使い方は、「find [検索を開始するディレクトリ] [検索条件] [実行するアクション]」という形をしている。まずは、最もよく使うファイル名や種類による検索方法から理解を深めていこう。
ファイルを名前で探す際、大文字と小文字を区別して検索したい場合は「-name」オプションを使う。「find /path/to/search -type f -name "myfile.txt"」のように指定すると、「/path/to/search」以下のディレクトリから、「myfile.txt」という名前のファイル(-type f はファイルを示す)を厳密に探し出す。もし大文字と小文字を区別せず、例えば「myfile.txt」も「MyFile.txt」も探したい場合は、「-iname」オプションを使うと良い。「find /path/to/search -type f -iname "myfile.txt"」とすることで、指定した名前のファイルを柔軟に検索できる。ファイルだけでなくディレクトリを検索することも可能で、「-type d」オプションを使い、「find / -type d -name "logs"」とすれば、システム全体から「logs」という名前のディレクトリを探し出せる。さらに、特定の拡張子を持つファイルを一括で検索したい場合は、ワイルドカード文字「」を活用する。「find /etc -type f -name ".conf"」と入力すれば、「/etc」ディレクトリ以下にあるすべての設定ファイル(.conf拡張子)を見つけ出すことができる。これは、システム設定を調査する際などに非常に便利だ。
次に、ファイルの更新時間やサイズといった「メタデータ」を利用した高度な検索方法を見ていこう。これは、古いログファイルを見つけたり、ディスク容量を多く消費しているファイルを特定したりする際に役立つ。 最終更新時間に基づいてファイルを検索するには、「-mtime」オプションを使う。「-mtime -1」と指定すると、過去24時間以内に更新されたファイルを意味し、「find /var/log -type f -mtime -1」で直近で更新されたログファイルを確認できる。逆に、「-mtime +7」と指定すると、7日以上前に更新されたファイルを意味し、「find /home/user/Downloads -type f -mtime +7」で古いダウンロードファイルを探し出すことができる。これは、ディスクスペースの整理に役立つだろう。 ファイルのサイズで検索する場合は、「-size」オプションを使用する。「+100M」と指定すれば100メガバイトより大きいファイルを意味し、「find / -type f -size +100M」でシステム全体の巨大なファイルを特定できる。このMはメガバイトを意味するが、K(キロバイト)やG(ギガバイト)も利用可能だ。また、「-empty」オプションを使えば、内容が空のファイルやディレクトリを簡単に探し出すこともできる。「find /path/to/search -empty」で、不要な空のリソースを見つけるのに役立つだろう。
「find」コマンドの真骨頂は、検索結果に対して直接アクションを実行できる点にある。これにより、検索したファイルを一つずつ手作業で処理する手間を省き、作業を自動化できる。 検索結果に対して任意のコマンドを実行するには、「-exec」オプションを使用する。「find /path/to/app -type f -name ".sh" -exec chmod +x {} ;」というコマンドは、「/path/to/app」以下のすべてのシェルスクリプトファイル(.sh拡張子)を見つけ出し、それぞれのファイルに対して「chmod +x」コマンドを実行し、実行権限を付与する。ここで「{}」は「find」コマンドが見つけたファイルの名前が一つずつ代入されるプレースホルダーであり、「;」は「-exec」オプションで実行するコマンドの終わりを示す。この組み合わせにより、多数のファイルに対して一括で処理を行うことが可能になる。 ファイルを削除する際には「-delete」オプションが便利だが、これは非常に強力な機能であるため、使用には細心の注意が必要だ。「find /var/backups -name ".zip" -type f -mtime +3 -delete」は、3日以上前のバックアップ用のzipファイルを検索し、自動的に削除する。しかし、一度削除されたファイルは元に戻すことができないため、このコマンドを実行する前には必ず対象ファイルが本当に不要なものかを確認する必要がある。誤操作を防ぐために、削除前に確認を求めたい場合は、「-ok」オプションを使用すると良い。「find / -type f -name "*.cache" -ok rm {} ;」とすることで、キャッシュファイルが見つかるたびに削除を実行するかどうかを「y/n」で尋ねてくれるため、より安全に作業を進めることができる。
このように、「find」コマンドは単なるファイル検索ツールにとどまらず、システムの分析、管理、そして日常業務の自動化において不可欠なツールである。ファイルの名前や種類だけでなく、更新日時やサイズといったメタデータで絞り込み、さらにその検索結果に対してコマンドを実行することで、手動では時間と手間がかかるような作業も効率的に行えるようになる。システムエンジニアを目指す初心者にとって、この「find」コマンドを深く理解し、使いこなすことは、日々の業務効率を大幅に向上させ、より高度なシステム管理スキルを身につけるための重要なステップとなるだろう。