Linuxでの5つのファイル検索コマンド

前書き

5つのファイル検索コマンドはLinux上でありますwhereislocatewhichtype、とfind。それぞれに独自の特性があり、特定の検索シナリオ用に設計されています。このガイドでは、各コマンドを紹介し、使用例を示します。これらのコマンドの詳細については、適切なマンページを確認することをお勧めします。

whereis

このwhereisコマンドは、バイナリファイル、ソースコード、およびいくつかの標準インストールディレクトリにあるオンラインマニュアルページで、指定されたプログラム名を検索するために使用されます。

whereisはシステム上のすべての場所を検索するわけではないため、これらの特定のディレクトリからのファイルは見つかりません。同じ理由で、見つかったかどうかに関係なく、検索結果をすばやく取得できます。

また、シェルに直接組み込まれているコマンドは検索されません。

たとえば、lsコマンドに関する情報を検索するには、端末で次のコマンドを実行します。

whereis ls

次のようなフィードバックが得られます。

ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

その結果、/bin/ls探したいバイナリはで、他の2つはlsプログラムのマンページです。プログラムのソースコードlsは見つかりませんでした。

/bin/lsファイルをホームディレクトリとディレクトリにコピーしてから/usr/binwhereisコマンドを再度実行します。

cp /bin/ls ~
cp /bin/ls /usr/bin/ls
whereis ls

ご覧のとおり、検索結果で/bin/lsとのみ/usr/bin/lsが見つかりました。lsホームディレクトリが標準のインストールディレクトリではないため、ホームディレクトリのプログラムが見つかりませんでした。

ls: /bin/ls /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

次のコマンドを実行すると、

whereis cd

次のような出力が表示されます。cdはシェルの組み込みコマンドであるため、バイナリファイルは検出されませんでした。

cd: /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz

locate

このlocateコマンドは、データベース(/var/lib/mlocate/mlocate.db)を使用して名前でファイルを検索するために使用されます。このデータベースは、基本的にはファイルシステムのレイアウトのスナップショットです。クエリに一致するこのデータベース内のすべてのレコードが検索結果に表示されます。デフォルトでは、locateコマンドはクエリを使用して、パス名を含む各レコードの名前全体の一部を照合します。したがって、検索結果で一致したファイルの数が予想よりも多くなる可能性があります。

データベースが古くlocateなると、コマンドの検索結果の精度が低下します。存在しなくなったファイルや、新しく作成されたファイルとの一致が表示されない場合があります。デフォルトでは、mlocate.dbデータベースは1日に1回自動的に更新されます。updatedbコマンドを使用して手動で更新できます。

検索はファイルシステムではなくデータベースで実行されるため、検索速度は非常に高速です。

次のコマンドを実行すると、

locate ls

期待される結果ではなく、多くのレコードが取得されます。

検索結果をより正確にするために、-bフラグを使用して検索範囲を制限し、クエリを使用して各レコードのベース名のみを照合することができます。

locate -b "\ls"

今回lsは、ファイルシステムで正確に呼び出される各ファイルの場所を取得します。

/bin/ls

which

このwhichコマンドは、環境変数の値で指定したコマンドを検索し、PATHデフォルトで最初の結果を返します。エイリアスを照会する場合、whichコマンドは検索を実行する前にエイリアスの実際のコマンドを決定します。

whichコマンドは、その単純さも非常に高速です。

whichコマンドの使い方は簡単です:

which your_command

最初のコマンドではなく、一致したすべてのコマンドを表示する場合は、-aフラグを使用します。

which -a your_command

エイリアスが設定されているコマンドを検索する例を次に示します。

which ll

検索結果は次のようになります。

alias ll='ls -l --color=auto'
    /bin/ls

type

デフォルトでは、typeコマンドはコマンド名の解釈方法を示します。考えられる結果には、エイリアス、キーワード、関数、組み込み、またはファイルが含まれます。whereisコマンドと同じように、コマンドtypeはいくつかの標準インストールディレクトリのみを検索して、クエリに回答します。

さまざまなコマンドを入力するいくつかの例:

シェル組み込みコマンド:

type cd

cd is a shell builtin

ファイルシステム上のバイナリファイル:

type sudo

sudo is /usr/bin/sudo

エイリアス:

type ls

ls is aliased to `ls --color=auto'

find

このチュートリアルで紹介した5つのファイル検索コマンドの中で、このfindコマンドは最も強力です。また、最も遅いものです。他の4つのコマンドとは異なり、findコマンドは実際にはファイルシステム全体でファイルを検索します(1つのiノードごとに1つのiノード)。このfindコマンドを使用すると、高度なクエリ基準を使用して、必要なすべてのファイルを見つけることができます。さらに、見つかったファイルに対してアクションを実行することもできます。

findコマンドの検索条件は洗練されているため、このような短い記事では説明できません。代わりにいくつかの例を示します。

findコマンドの基本フォーマット:

find [path] [option] [action]

作業ディレクトリとそのすべてのサブディレクトリにあるすべてのファイルを見つけるには:

find

aaaホームディレクトリとそのすべてのサブディレクトリで呼び出されるファイルを見つけるには:

find ~ -name 'aaa'

過去24時間に変更されたファイルシステム内のすべてのファイルを検索するには:

find / -mtime 0

userに属するwebディレクトリとそのサブディレクトリのすべてのファイルを見つけるにはnginx

find /usr/share/nginx/html/ -user nginx

権限が0744次の作業ディレクトリにあるすべてのファイルを検索するには:

find -perm -0744

aaa作業ディレクトリで名前が付いたファイルを検索し、その詳細情報を一覧表示するには:

find -name 'aaa' -exec ls -l {} \;


Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。