Linux の find コマンド:ファイル検索

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、あなたはデジタルな探偵としての旅に出ます。Linux の強力な find コマンドの使い方を学びます。find コマンドは、さまざまな基準に基づいてファイルとディレクトリを検索するための必須ツールです。この冒険が終わる頃には、最も複雑なファイルシステムでも簡単に検索できるスキルを身につけています。この実験は初心者向けに設計されています。だから、Linux に慣れていなくても心配しないでください。私たちが丁寧に各ステップを案内します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/find("File Searching") subgraph Lab Skills linux/cd -.-> lab-219191{{"Linux の find コマンド:ファイル検索"}} linux/find -.-> lab-219191{{"Linux の find コマンド:ファイル検索"}} end

find の使い始め

find コマンドの基本的な使い方を理解することで、探偵活動を始めましょう。デジタルな犯罪現場で重要な証拠を探していると想像してください。

まず、捜査本部に移動しましょう。Linux では、ディレクトリを変更するには cd コマンドを使用します。次のコマンドを入力して Enter キーを押してください。

cd /home/labex/project

このコマンドは、/home/labex/project ディレクトリに移動します。これがこの実験の作業ディレクトリになります。いつでも自分がどこにいるか知りたい場合は、pwd コマンドを使用して現在の作業ディレクトリを表示できます。

次に、find コマンドを使って "clue.txt" という名前のファイルを探しましょう。

find. -name "clue.txt"

このコマンドを分解してみましょう。

  • find は使用するコマンドです。
  • .find に対して現在のディレクトリから検索を開始するように指示します。
  • -name "clue.txt"find に対して正確に "clue.txt" という名前のファイルを探すように指示します。

このコマンドを実行すると、次のような出力が表示されます。

./evidence/clue.txt

この出力は、現在の場所の "evidence" サブディレクトリに "clue.txt" という名前のファイルが見つかったことを示しています。パスの先頭の ./ は "現在のディレクトリから始まる" ことを意味します。

出力が表示されない場合は心配しないでください!これは、現在のディレクトリまたはそのサブディレクトリにファイルが見つからなかったことを意味します。本当の捜査では、これは他の場所を探す必要があることを意味するかもしれません。別のディレクトリから検索したり、ファイル名を正しく入力したかどうかを確認したりしてみることができます。

複数のファイルタイプの検索

捜査が進むにつれて、複数の種類の証拠ファイルを見つける必要があります。このステップでは、ワイルドカードを使って find コマンドを使って異なる拡張子のファイルを検索する方法を学びます。

.txt.log の両方の拡張子を持つファイルを検索するために find コマンドを使いましょう。

find. -name "*.txt" -o -name "*.log"

この新しくてもっと複雑なコマンドを分解してみましょう。

  • find. は以前と同じで、find に対して現在のディレクトリから検索を開始するように指示します。
  • -name "*.txt".txt で終わる任意のファイルを探します。
  • -ofind コマンドの構文で「または」を意味します。
  • -name "*.log".log で終わる任意のファイルを探します。

* はワイルドカード文字で、任意の数の文字と一致します。だから *.txt は、その前に何があっても .txt で終わる任意のファイルと一致します。これは、正確なファイル名は分からないけれども拡張子は知っている場合に非常に便利です。

このコマンドを実行すると、次のような出力が表示されます。

./evidence/clue.txt
./evidence/new_lead.txt
./logs/system.log
./logs/recent_activity.log
./notes/interview.txt

この出力は、現在のディレクトリとそのサブディレクトリ内のすべての .txt.log ファイルを示しています。各行は、検索条件に一致するファイルのパスです。

もし異なるファイルやより少ないファイルが見えた場合でも、心配しないでください。重要なことは、出力の中に .txt.log の両方のファイルが見えることです。実際のファイルは、あなたの特定の設定によって異なる場合があります。

サイズによるファイル検索

次のステップでは、重要なデータを含んでいる可能性のある大きなファイルを検索します。大きなファイルは、データベース、アーカイブ、または捜査における他の重要な証拠になり得ます。

1 メガバイトより大きいすべてのファイルを探しましょう。

find. -type f -size +1M

このコマンドを分解してみましょう。

  • find. は私たちが知っている起点です。
  • -type ffind に対して通常のファイルのみを探すように指示します(ディレクトリや他の特殊な種類ではありません)。
  • -size +1M は 1 メガバイトより大きいファイルを指定します。

1M の前の + は「より大きい」を意味します。1 メガバイトのファイルを探したい場合は 1M を使い、1 メガバイト未満のファイルを探したい場合は -1M を使います。また、キロバイトの場合は k、ギガバイトの場合は G など、他のサイズ単位も使えます。

このコマンドを実行すると、次のような出力が表示されます。

./evidence/large_file.dat

この出力は、捜査ディレクトリに 1 メガバイトより大きいファイルが 1 つあることを示しています。.dat 拡張子は多くの場合、データファイルを示しており、捜査において重要なものになり得ます。

出力が表示されない場合は心配しないでください!これは、現在のディレクトリとそのサブディレクトリに 1 メガバイトより大きいファイルがないことを意味します。現実のシチュエーションでは、サイズパラメータを調整したり、異なるディレクトリを探したりする必要があるかもしれません。

最近変更されたファイルの検索

探偵として、私たちはしばしば最近の活動に興味があります。このステップでは、最近変更されたファイルをどのように見つけるかを学びます。これにより、事件の最新の展開に関する手がかりが得られるかもしれません。

過去 24 時間以内に変更されたファイルを探しましょう。

find. -type f -mtime -1

このコマンドを分解しましょう。

  • find.-type f は以前見たことがあります。
  • -mtime -1 は新しいものです。これは find に対して 1 日未満に変更されたファイルを探すように指示します。

-mtime オプションは 24 時間刻みで時間を測定します。-1 は「1 日未満前」を意味します。1 日前に正確に変更されたファイルを探したい場合は -mtime 1 を使い、1 日以上前に変更されたファイルを探したい場合は -mtime +1 を使います。

このコマンドを実行すると、次のような出力が表示されるかもしれません。

./evidence/clue.txt
./evidence/large_file.dat
./evidence/new_lead.txt
./logs/system.log
./logs/recent_activity.log
./notes/interview.txt

この出力は、過去 24 時間以内に変更されたファイルを示しています。これらは私たちの最も有力な手がかりになるかもしれません!これらのファイルのそれぞれには、捜査にとって重要な最近の情報が含まれている可能性があります。

出力が表示されない場合は、過去 24 時間以内にファイルが変更されていないことを意味します。本当の捜査では、これは活動休止期間を示すかもしれません。または、検索パラメータを広げる必要があることを意味するかもしれません。

見つけたファイルにコマンドを実行する

さて、私たちの探偵技術と法医学的分析を組み合わせてみましょう。find コマンドを使ってすべての.txt ファイルを見つけ、その後 cat コマンドを使ってそれらの内容を表示します。これは、見つけたすべての文書を迅速に調べて手がかりを探すようなものです。

コマンドはこちらです。

find. -name "*.txt" -exec cat {} \;

このコマンドは複雑に見えるので、分解してみましょう。

  • find. -name "*.txt" は以前見たことがあります。これはすべての.txt ファイルを見つけます。
  • -exec cat {} \; は新しいものです。これは find に対して見つけた各ファイルに cat コマンドを実行するように指示します。
    • cat はファイルの内容を表示するコマンドです。
    • {}find が見つけた各ファイル名で置き換えるプレースホルダです。
    • \;-exec コマンドの終わりを示します。

このコマンドを実行すると、すべての.txt ファイルの内容が表示され、以下のようなものになります。

The suspect was last seen wearing a red hat.
New lead: Check the security camera footage from the back alley.
Witness reported hearing a loud noise at approximately 10 PM.

見るごとに表示される各テキストブロックは、異なる.txt ファイルの内容です。このコマンドを使うと、個別に各ファイルを開かずにすべてのテキストファイルの内容を迅速に確認できます。

最後に \; を使う理由が疑問に思うかもしれませんが、これは -exec のコマンドがどこで終わるかを find に知らせるためです。これがないと、find はファイルに対してさらに何かを行いたいのかどうかを知りません。

まとめ

おめでとうございます、探偵様!この実験では、Linux ツールキットの中でも強力なツールである find コマンドを習得しました。以下のことが学べました。

  1. 名前でファイルを検索する
  2. ワイルドカードを使って複数のファイルタイプを検索する
  3. サイズに基づいてファイルを検索する
  4. 最近変更されたファイルを特定する
  5. 見つけたファイルにコマンドを実行する

これらのスキルは、ファイル管理やシステムトラブルシューティング、さらにはデジタルな謎を解く際に役立ちます!

この実験では扱わなかった追加の find コマンドオプションには以下があります。

  • -user:特定のユーザーが所有するファイルを検索する
  • -group:特定のグループに属するファイルを検索する
  • -perm:特定のパーミッションを持つファイルを検索する
  • -maxdepth:ディレクトリの探索深度を制限する
  • -mindepth:最小深度から検索を開始する
  • -empty:空のファイルまたはディレクトリを検索する
  • -newer:指定されたファイルより新しいファイルを検索する

覚えておいてください、練習が磨きになります。これらのコマンドを異なるディレクトリで試してみることで、もっと慣れ親しんでください。find を使う回数が増えるほど、複雑なファイルシステムで必要なものを正確に見つける際のその力と柔軟性を発見できます。