はじめに
この実験では、あなたはデジタルな探偵としての旅に出ます。Linux の強力な find
コマンドの使い方を学びます。find
コマンドは、さまざまな基準に基づいてファイルとディレクトリを検索するための必須ツールです。この冒険が終わる頃には、最も複雑なファイルシステムでも簡単に検索できるスキルを身につけています。この実験は初心者向けに設計されています。だから、Linux に慣れていなくても心配しないでください。私たちが丁寧に各ステップを案内します。
この実験では、あなたはデジタルな探偵としての旅に出ます。Linux の強力な find
コマンドの使い方を学びます。find
コマンドは、さまざまな基準に基づいてファイルとディレクトリを検索するための必須ツールです。この冒険が終わる頃には、最も複雑なファイルシステムでも簡単に検索できるスキルを身につけています。この実験は初心者向けに設計されています。だから、Linux に慣れていなくても心配しないでください。私たちが丁寧に各ステップを案内します。
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
で終わる任意のファイルを探します。-o
は find
コマンドの構文で「または」を意味します。-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 f
は find
に対して通常のファイルのみを探すように指示します(ディレクトリや他の特殊な種類ではありません)。-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
コマンドを習得しました。以下のことが学べました。
これらのスキルは、ファイル管理やシステムトラブルシューティング、さらにはデジタルな謎を解く際に役立ちます!
この実験では扱わなかった追加の find
コマンドオプションには以下があります。
-user
:特定のユーザーが所有するファイルを検索する-group
:特定のグループに属するファイルを検索する-perm
:特定のパーミッションを持つファイルを検索する-maxdepth
:ディレクトリの探索深度を制限する-mindepth
:最小深度から検索を開始する-empty
:空のファイルまたはディレクトリを検索する-newer
:指定されたファイルより新しいファイルを検索する覚えておいてください、練習が磨きになります。これらのコマンドを異なるディレクトリで試してみることで、もっと慣れ親しんでください。find
を使う回数が増えるほど、複雑なファイルシステムで必要なものを正確に見つける際のその力と柔軟性を発見できます。