この記事では、Linuxでファイルとディレクトリを見つける方法について説明します。 Locate、find、およびgrepコマンドを使用します。各コマンドについては、以下で詳しく説明します。
Ubuntu 20.04 LTSを使用しました プロセスを示すため。
Locateコマンドを使用してLinuxでファイルとディレクトリを検索する
Locateコマンドは、システム内のすべてのファイルパスを含むmlocate.dbデータベースを読み取るため、より高速な結果を提供します。
ロケートのインストール
以下のメッセージが表示された場合は、locateをインストールする必要があります。
Locateをインストールするためのコマンドは次のとおりです。
sudo apt-get install mlocate
最初のステップはパスワードを入力することです。パスワードを入力すると、インストールが開始されます。
インストール後に検索データベースを更新する必要があります。 Locateはこのデータベースに依存しているため、効率を確保するために定期的に更新する必要があります。 mlocateデータベースを更新するには、スーパーユーザー権限が必要です。
sudo updatedb
ファイル名を使用してファイルを検索する
名前を使用してファイルを検索するには、次のコマンドを使用します。
locate {filename}
「textfile.txt」というファイルを探すので、コマンドは次のようになります。
locate textfile.txt
結果は、ファイルが配置されている場所へのパスになります。
大文字と小文字の区別を無視する
デフォルトでは、検索では大文字と小文字が区別される方法でクエリが処理されます。つまり、textfile.txtとTEXTFILE.TXTは異なる検索結果を指します。
ご覧のとおり、TEXTFILE.TXTが見つかりませんでした。
–i を使用すると、大文字と小文字の区別を無視できます。 オプション。コマンドは次のとおりです。
locate –i {file name}
ご覧のとおり、ファイルはこれで見つかりました。
findコマンドを使用してLinuxでファイルとディレクトリを検索する
見つけるのに比べて、見つけるのははるかに強力ですが、遅くなります。ディスクを検索してファイルを検索するため、処理速度は遅くなります。 findが優れているのは、ユーザーグループ、ファイルが変更またはアクセスされた日時、ファイルのアクセス許可、日付、サイズに基づいてLinux内のファイルとディレクトリを検索できることです。
現在のディレクトリでファイルを探しています
次のコマンドを使用して、現在のディレクトリにある特定の名前のすべてのファイルを表示できます。
find . -name {filename}
現在のディレクトリに「textfile.txt」という名前のすべてのファイルが表示されます。
ホームディレクトリでファイルを探す
ホームディレクトリでファイルを探すには、 / homeを使用します 。コマンドは次のようになります:
find /home -name {filename}
ホームディレクトリにHello.txtという名前のすべてのファイルが表示されます。
大文字と小文字の区別を無視する
デフォルトでは、findは大文字と小文字を区別してクエリを処理します。つまり、hello.txtとHello.txtは異なる検索結果を指します。
ご覧のとおり、hello.txtが見つかりませんでした。
大文字と小文字の区別を無視するには、次のコマンドを使用します。
find –iname {file name}
下の画像でわかるように、hello.txtが見つかりました。
ワイルドカードを使用して検索
ワイルドカードを使用して、特定の条件でファイルを検索できます。アスタリスク( * )ワイルドカードを使用すると、文字のインスタンスを照合できます。
以下の例では、次のコマンドを使用しています。
find . –name ‘*he’
このコマンドは、「he」で終わるすべてのファイル名を一覧表示します
find . –name ‘he*’
このコマンドは、「彼」で始まるすべてのファイル名を一覧表示します
ファイルサイズを使用して検索
サイズに基づいてファイルを検索するには、次を使用します:
find –size {filesize} –type f
このコマンドは、68バイトのサイズのファイルを検索します。
特定のサイズより大きいまたは小さいファイルを検索するには、「 +」を追加します 」または「– 」をそれぞれコマンドに追加します。
find –size -{filesize} –type f
以下の例では、512バイト未満のファイルを検索します。
このコマンドは、512バイトを超えるファイルを検索します。
最後に変更された日時に基づいてファイルを検索します
以下のコマンドを使用して、最後に変更された日時に基づいてファイルを検索します。
find -iname "*.txt" -mtime -60
このコマンドは、過去60日間に変更されたファイルを検索します。
ディレクトリの検索
ディレクトリを見つけるには、次のコマンドを使用します:
find –name “{file name}” –type d
結果として、ディレクトリへのパスを確認できます。
読み取り専用ファイルを検索
読み取り専用ファイルを検索するには、コマンド
を使用しますfind / -perm /u=r
ターミナルですべての読み取り専用ファイルを確認できます。
Grepコマンドを使用してLinuxでファイルとディレクトリを検索する
Linuxでは、Grep、Global Regular Expression Printを使用して、特定のファイル内の文字列を検索します。 grepがそれらの文字を見つけると、その行を出力します。コマンドは次のとおりです。
grep {string} {file name}
以下の例では、ファイル「textfile.txt」で文字列「is」を検索します。 「is」を含む行が表示されます。
行番号を印刷する
次のコマンドを使用して、一致する文字列とともに行番号を印刷します。
grep {string} {filename} –n
次の例では、文字列「is」が見つかった行番号を出力します。
逆一致
このオプションを使用すると、入力したパターンと一致しない行を印刷できます。
grep {string} {file name} –v
次の例では、「is」を含まないテキストファイル「textfile.txt」から行を出力します。
大文字と小文字の区別を無視する
デフォルトでは、grepは大文字と小文字を区別してクエリを処理します。つまり、ISは異なる検索結果を指します。
ご覧のとおり、「IS」は見つかりませんでした。
大文字と小文字を区別しない場合は、以下のコマンドを使用してください:
grep {string} {file name} –i
再帰検索
デフォルトでは、Grepではディレクトリを検索できません。次のエラーが発生します:
次を使用してディレクトリ内を検索できます:
grep {string} . –R
次の例では、現在のディレクトリで文字列「some」を検索します。
この記事では、Linuxでファイルとディレクトリを検索するために、locate、find、およびgrepがどのように機能するかを説明しました。また、それらがどのように使用されるかについてもいくつかのケースを経験しました。