このハウツーでは、 Linuxファイルシステム上のファイルやディレクトリを見つけるのに役立つfindコマンドの様々な使い方を紹介します。ファイルやディレクトリを紛失してしまうと、ターミナルを使って検索するのに貴重な時間を費やしてしまうことがあります。Linuxデスクトップでは、ファイルマネージャーやターミナルに検索ツールが組み込まれています。findコマンドは非常に便利で、使い方も非常に簡単です。
これらのコマンドに慣れるまでは、テスト ファイルとディレクトリを使用して作業することをお勧めします。また、指示に注意深く従うように細心の注意を払う必要があります。
このハウツーで紹介するコマンドはすべて、ほとんどのLinuxマシンで動作します。Ubuntu LTSインストールを使用していますが、Raspberry Piでも実行できます。ハウツーはすべてターミナル経由で実行します。ほとんどのLinuxマシンでは、Ctrl、Alt、Tキーを押すことでターミナルウィンドウを開くことができます。
Linuxでファイルを検索する
まず、ディレクトリ内にいくつかのサンプル ファイルを作成し、findコマンドを使用してそれらを検索してみましょう。
1.テストファイルを含むテストフォルダを作成します。テストディレクトリとファイルを作成したら、 ls コマンドを使用してファイルが作成されたことを確認します。
mkdir test
cd test
touch test1.txt test2.h test3.c TEST.f
ls
2.テストディレクトリで、 test1.txtというファイルを探します。findコマンドに「.」を付けて実行すると、検索範囲が現在の作業ディレクトリに限定されます。findコマンドを実行すると、test1.txtファイルが結果として表示されるはずです。
find . -name test1.txt
Linuxで部分的なファイル名を使って検索する
場合によっては、ファイル名やディレクトリ名の一部を使って検索する必要があるかもしれません。その方法と、部分的な検索語句を使った検索が結果にどのような影響を与えるかを見てみましょう。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
1.テストディレクトリで次のコマンドを実行し、名前に「tes」という語が含まれるファイルを検索します。
find . -name "*tes*"
結果リストには、TEST.f を除くすべてのファイルが検出され、リストアップされているはずです。これは、-name が大文字と小文字を区別する結果を返すためです。大文字と小文字を区別しない結果を返す代替方法については、後のセクションで説明します。
2.特定のファイル拡張子を検索するコマンドを繰り返します。同じ方法で特定のファイルタイプを検索できます。コマンドを「*.txt*」に変更すると、.txtファイルタイプのみが返されます。
find . -name "*.txt*"
3. -inameを使用すると、大文字と小文字を区別しない結果が返されます。ここでも部分的な検索語「*tes*」を使用していますが、-inameを使用することで、大文字小文字に関係なくすべての結果が表示されます。そのため、結果にはファイルTEST.fが含まれます。
find . -iname "*tes*"
Linuxにおけるディレクトリとファイルの区別
標準形式では、findコマンドはファイルまたはディレクトリに関わらず、一致する結果をすべて返します。また、findコマンドにタグを追加することで、ファイルのみ、またはディレクトリのみを返すように強制することもできます。
1.テストディレクトリ内にtest2というディレクトリを追加します。lsコマンドを使用して、ディレクトリが作成されたことを確認します。
cd test
mkdir test2
ls
2.ファイルとディレクトリの両方の結果を返すfindコマンドを実行します。結果にはすべてのテストファイルとtest2ディレクトリが含まれているはずです。
find . -iname "*test*"
3.ファイルの結果のみを返すには、 -type fタグを追加します。結果ではディレクトリtest2が省略されていることに注意してください。
find . -iname "*test*" -type f
4.ディレクトリの結果のみを返すように -type d タグを追加します。これで、 test2ディレクトリのみが結果に表示されるようになります。
find . -iname "*test*" -type d
Linuxでファイルシステム全体を検索する
置き忘れたファイルや忘れられたファイルを探すには、ファイルシステム全体を検索する必要がある場合があります。
1.ファイルシステムのルート (/) からtest1.txtファイルを検索します。この手順は必ずしも成功するとは限りませんが、よくある問題を説明するために追加されています。
cd
find / -iname test1.txt
多くの領域で検索権限がないことが分かります。そのため、検索できない領域の長いレポートリストが表示されます。test1.txtファイルは見つかったものの、レポートリストを検索して見つける必要があります。この例では、/ を使用することで、コマンドがすべてのサブディレクトリを検索できるようにしていることに注意してください。
2.前の検索を繰り返しますが、sudoを使用してルート権限を追加します。これにより、コマンドはファイルシステム内のほとんどの場所にアクセスできるようになるため、返されるレポートはより明確で読みやすくなります。
sudo find / -iname test1.txt
これらの例を使用すると、名前の一部しか知らない場合でも、システム上の任意の場所にあるファイルを検索するための基本的なツール セットが手に入るはずです。