ウェブサイト検索

Linuxのコマンドラインでファイルを検索する方法


Linuxディストリビューションでファイルを見つけるのに苦労している場合、あなたの作業をずっと楽にするための組み込みのコマンドラインツールがあります。

私は数十年にわたってLinuxを使用しており、コマンドラインは私にとって第二の天性ですが、それでもGUIツールを使用することを選びます。なぜなら、GUIツールはターミナルベースのものよりもはるかに効率的である傾向があるからです。しかし、私が常にコマンドラインに頼る作業が一つあります。それはファイルを見つけることです。

はい、この目的のために利用可能なGUIツールはたくさんあり、多くのデスクトップ環境がこの機能をアプリケーションメニューに統合しています。しかし、私はそれらの選択肢のいくつかがファイルを見つけるにはあまり良くないと感じており、そのインデックス処理が時々システムのスローダウンを引き起こすことがあります。これらの理由から、私はターミナルウィンドウを開いて問題のファイルを見つけることを好みます。

この方法の唯一の欠点は、GUIを使用する場合とは異なり、一度ファイルが見つかると手動で開かなければならないことです。GUIツールはファイルを見つけ、その後、単にクリック(またはダブルクリック)して開くことができます。コマンドラインオプションでは、ファイルの場所が表示されます。そして、その後、関連するアプリケーションを開き、アプリケーションのファイル > 開くメニューを通じてファイルを開く必要があります。しかし、この手動プロセスは、コマンドラインツールの速度と正確性のために私が受け入れる準備ができているトレードオフです。

ツールの使い方をお見せします。

CLIからファイルを見つける方法

必要なもの:この作業に必要なのは、ほぼすべてのLinuxディストリビューションが実行されていることだけです。私はfindコマンドを2つの理由で使用します。それは、デフォルトでインストールされていて、使いやすいからです。Linuxでファイルを見つけるのがどれほど簡単か、示しましょう。

1. findコマンドの基本的な使い方

デスクトップメニューからターミナルウィンドウを開いてください。ターミナルアプリが開いたら、基本的なfindコマンドの構文を入力します:

find -name FILE

上記のコマンドでは、FILEは検索しているファイルの名前です。

さて、いくつかのことを説明します。まず、パターンに一致するために「name」を使用します。「find」を名前なしで使用することもできますが、ファイルがある正しいディレクトリにいない限り、探しているファイルは見つかりません。その制限は、もちろん、あまり役に立たないかもしれませんので、常にコマンドに「-name」を追加することを忘れないでください。そうすれば、コマンドを実行した場所に関係なく、問題のファイルを見つけることができます。

第二に、FILEは大文字と小文字を区別します。MyFileという名前のファイルを探していて、find -name myfileというコマンドを使用すると、findはファイルを見つけることができません。第三に、findコマンドは、あなたが表示する権限を持っているディレクトリ内のファイルのみを検索することができます。findがアクセスできないディレクトリに遭遇すると、Permission Deniedエラーが表示されます。

2. トリックと罠

あなたが MyFile.txt を探しているとしましょう。単に以下のコマンドを実行することができます。

find -name MyFile.txt

しかし、MyFile.txt、MyFile.odt、MyFile.rtfという名前のファイルがあり、それらがすべてどこにあるのか知りたい場合はどうでしょうか?そのような状況では、次のように*ワイルドカードを使用できます:

find -name MyFile.*

さて、MyFileのすべてのインスタンスを見つけ出し、それがどこにあるかを報告します。

しかし、このトリックには罠があります。あなたのホームディレクトリ(つまり、~/)にMyFile.rtfがあり、ダウンロードディレクトリにMyFile.odtがあり、ドキュメントディレクトリにMyFile.txtがあるとしましょう。

ホームディレクトリにいる場合、find -name MyFile.*コマンドを実行すると、コマンドはホームディレクトリにあるMyFile.rtfを見つけ、その後の検索を停止します。

しかし、システムのルートディレクトリ(すなわち /)にいる場合、find コマンドを実行すると、すべてのファイルが見つかり、次のような出力が得られます:

./jack/MyFile.rtf
./jack/Downloads/MyFile.odt
./jack/Documents/MyFile.txt

このトラップを回避する別の方法があります。ファイル名を引用符で囲むことができます。例えば、次のように:

find -name "MyFile.*"

ホームディレクトリにいても、findコマンドはファイルの最初のインスタンスを見つけた後でも検索を続けます。私のアドバイスは、ファイル名には常に引用符を使う習慣を身につけることです。

そして、それがLinuxのコマンドラインでファイルを見つけるのがこれほど簡単な理由です。

関連記事: