1 はじめに
ディレクトリの検索は、Linux オペレーティング システムの一般的なタスクです。システム管理者でも一般ユーザーでも、ファイル システムの移動、データのバックアップ、ファイルの削除などのさまざまな操作を実行するために、特定のディレクトリを見つけることが必要になる場合があります。Linux には、ファイル システム内のターゲット ディレクトリをすばやく見つけるのに役立つさまざまなコマンドとツールが用意されています。この記事では、Linux でディレクトリを効率的に検索するためによく使用されるいくつかの方法とコマンドを紹介します。
2.find
コマンドを使用します
find
コマンドは、Linux システムの強力な検索ツールです。指定されたディレクトリを再帰的に走査し、さまざまな基準に基づいてファイルとディレクトリを検索できます。
2.1 基本的な構文
find
コマンドの基本的な構文は次のとおりです。
find [path] [expression]
このうち、path
検索開始ディレクトリのパスです。省略した場合、デフォルトではカレントディレクトリから検索が開始されます。expression
ファイル名、ファイルタイプ、サイズ、権限などの検索基準を指定するためのオプションです。
2.2 例
2.2.1 指定したディレクトリの下にあるすべてのサブディレクトリを検索する
指定したディレクトリの下にあるすべてのサブディレクトリを検索するには、次のコマンドを使用できます。
find /path/to/directory -type d
このコマンドは、/path/to/directory
ディレクトリの下にあるすべてのサブディレクトリを再帰的に検索し、そのパスを出力します。
例えば:
find /tmp -type d
出力:
2.2.2 ディレクトリ名に特定の文字列が含まれるディレクトリを検索する
ディレクトリ名に特定の文字列が含まれるディレクトリのみを検索したい場合は、次の-name
オプションを使用できます。
find /path/to/directory -type d -name "keyword"
keyword
検索したい文字列に置き換えます。
例えば:
find /tmp -type d -name "localhost"
出力:
2.2.3 指定したユーザーのディレクトリを検索する
特定のユーザーのディレクトリを検索するには、次の-user
オプションを使用できます。
find /path/to/directory -type d -user username
username
対象ユーザーのユーザー名に置き換えます。
例えば:
find /tmp -type d -user root
出力:
2.2.4 特定の日付範囲内に変更されたディレクトリを検索する
特定の日付範囲内に変更されたディレクトリを検索することもできます。たとえば、過去 7 日間に変更されたディレクトリを検索するには、次のようにします。
find /path/to/directory -type d -mtime -7
このコマンドは、過去 7 日間に変更されたディレクトリを返します。
例えば:
find /tmp -type d -mtime -7
出力:
2.2.5 検索結果をファイルに出力する
検索結果を端末に表示するのではなくファイルに出力したい場合は、リダイレクト演算子を使用できます>
。
find /path/to/directory -type d -name "keyword" > result.txt
これにより、検索結果がresult.txt
というファイルに保存されます。
例えば:
find /tmp -type d -name "localhost" > result.txt
more result.txt
2.3 その他のオプション
find
コマンドは、ファイル サイズによる検索、アクセス許可による検索など、他の多くのオプションもサポートしています。find
( コマンドを使用して) コマンドのマニュアル ページを参照するman find
と、その他のオプションと例を確認できます。
3.locate
コマンドを使用します。
locate
コマンドは、Linux でディレクトリとファイルを検索するもう 1 つの簡単な方法です。コマンドとは異なりfind
、locate
コマンドはデータベースを使用して検索プロセスを高速化します。
一般的なサーバーにはこのコマンドがない可能性があるため、インストールする必要があります。
apt install mlocate
3.1 データベースの更新
コマンドを使用する前にlocate
、データベースが最新であることを確認する必要があります。データベースは次のコマンドで更新できます。
sudo updatedb
このコマンドには管理者権限が必要であり、最新のファイル情報を含めるためにデータベースが再生成されます。
3.2 ディレクトリの検索
ディレクトリを検索するコマンドはファイルを検索するコマンドと同じですが、-type d
検索結果をディレクトリに制限するオプションを使用するだけです。
locate -b '\keyword'
keyword
検索したい文字列に置き換えます。
3.3 大文字と小文字を区別しない
デフォルトでは、locate
コマンドは大文字と小文字が区別されます。大文字と小文字を区別せずに検索したい場合は、次の-i
オプションを使用できます。
locate -i -b '\keyword'
3.4 その他のオプション
locate
このコマンドは、検索結果の数の制限、データベース ファイルの指定など、いくつかの追加オプションをサポートしています。locate
( コマンドを使用して) コマンドのマニュアル ページを参照するman locate
と、その他のオプションと例を確認できます。
4.find
と をgrep
組み合わせて使用します
場合によっては、検索結果をさらに特定のカテゴリにフィルタリングする必要がある場合があります。これは、find
コマンドとコマンドを組み合わせて使用することで実現できます。grep
たとえば、次で終わる/path/to/directory
ディレクトリの下にあるすべてのディレクトリを検索するとします.log
。
find /path/to/directory -type d | grep ".log$"
このコマンドは、まずfind
このコマンドを使用してすべてのディレクトリを検索し、次にその結果をgrep
フィルタリングのためにコマンドに渡します。
5.tree
コマンドを使用します。
ディレクトリとサブディレクトリをツリー構造で表示したい場合は、tree
コマンドを使用できます。tree
このコマンドは、指定されたディレクトリとそのサブディレクトリの内容を再帰的に一覧表示します。
5.1 インストールtree
コマンド
一部の Linux ディストリビューションでは、tree
このコマンドがデフォルトでインストールされない場合があります。次のコマンドでインストールできます。
Ubuntu と Debian の場合:
sudo apt-get update
sudo apt-get install tree
CentOS および Fedora の場合:
sudo yum install tree
5.2tree
コマンドの使用方法
tree
コマンドの使用は非常に簡単です。検索するディレクトリ パスを指定するだけです。
tree /path/to/directory
tree
このコマンドは、指定されたディレクトリとそのサブディレクトリの内容をツリー構造で再帰的に表示します。
例えば:
tree /tmp
5.3tree
コマンドオプション
tree
このコマンドは、必要に応じて出力結果を調整できるいくつかのオプションもサポートしています。よく使用されるオプションをいくつか示します。
-d
: ファイルではなくディレクトリのみを表示します。-L level
: 表示レベルの数を制限します。たとえば、-L 2
2 レベルのディレクトリ構造のみを表示します。-I pattern
: 除外するディレクトリまたはファイルのパターンを指定します。たとえば、で終わる-I "*.log"
すべてのファイルを除外します。.log
-f
: 相対パスだけでなく完全なパスを表示します。
tree
( コマンドを使用して) コマンドのマニュアル ページを参照するman tree
と、その他のオプションと例を確認できます。
6.ls
コマンドを使用します。
特殊な検索ツールに加えて、ls
コマンドもディレクトリの検索に役立ちます。ls
このコマンドはディレクトリの内容を一覧表示するために使用され、さまざまなオプションとワイルドカードを組み合わせてディレクトリをフィルタリングできます。
6.1 ディレクトリの検索
ls
ディレクトリを検索するには、コマンドの-d
オプションとワイルドカードを組み合わせて使用できます*/
。
ls -d /path/to/directory/*/
このコマンドは、/path/to/directory/
ディレクトリの下にあるすべてのサブディレクトリを一覧表示します。
6.2 特定の名前のディレクトリを検索する
ディレクトリ名が特定の名前と完全に一致するディレクトリのみを検索したい場合は、ディレクトリ名を引数として直接使用できます。
ls -d /path/to/directory/directory_name
directory_name
ターゲットディレクトリの名前に置き換えます。
6.3 特定の文字列を含むディレクトリを検索する
ls
コマンドの*
ワイルドカードを使用して、ディレクトリ名に特定の文字列が含まれるディレクトリを検索することもできます。
ls -d /path/to/directory/*keyword*
keyword
検索したい文字列に置き換えます。
6.4 その他のオプション
ls
このコマンドは、ディレクトリの詳細の表示、変更時間による並べ替えなど、他のオプションもサポートしています。ls
( コマンドを使用して) コマンドのマニュアル ページを参照するman ls
と、その他のオプションと例を確認できます。
7. 結論
Linux でディレクトリを検索することは一般的かつ重要なタスクです。find
、、、およびコマンドはlocate
、ファイル システム内のターゲット ディレクトリをすばやく見つけるのに役立つ 4 つの一般的に使用されるツールです。これらのコマンドの使用に習熟すると、Linux システムでディレクトリとファイルをより効率的に管理し、さまざまな操作をより簡単に実行できるようになります。tree
ls