Skip to content

Linux レシピ:ファイルの検索#

find コマンド#

Linuxで特定の文字列がファイル名に存在するファイルを検索するには、findコマンドを使用することができます。 以下は、特定のディレクトリから特定の文字列がファイル名に存在するファイルを検索する基本的なコマンドです。

find /path/to/directory -type f -name "*文字列*"

ここで置き換えるべき部分は次の通りです:

/path/to/directory:検索を行いたいディレクトリのパスを指定します。 "文字列":検索したい文字列をダブルクォーテーションで囲み、ワイルドカード * を使用して部分一致を行います。 例えば、/home/user/documents ディレクトリ内でファイル名に "example" という文字列が含まれるファイルを検索する場合は、以下のようになります:

find /home/user/documents -type f -name "*example*"

このコマンドは、指定されたディレクトリ以下のすべてのファイルを再帰的に検索し、ファイル名に指定した文字列が含まれるファイルを表示します。

追加のオプションを使用して検索結果を調整することも可能です。例えば、大文字小文字を区別しないで検索する場合は -iname オプションを使用できます。

find /path/to/directory -type f -iname "*文字列*"

さらに、検索結果をファイル名のみ表示したい場合は、-printf オプションを使って以下のようにフォーマット指定できます。

find /path/to/directory -type f -name "*文字列*" -printf "%f\n"

Warning

find コマンド自体は、ファイルの中身を直接検索する機能を持っていません。find コマンドは主にファイルシステム内をファイルやディレクトリの名前や属性などで検索するために使用されます。

egrep#

egrepコマンドを使用してもファイル名に特定の文字列が含まれるファイルを検索できます。以下は、egrepコマンドを使用した方法です。

egrep -rl "文字列" /path/to/directory

ここで置き換えるべき部分は次の通りです:

"文字列":検索したい文字列をダブルクォーテーションで囲みます。 /path/to/directory:検索を行いたいディレクトリのパスを指定します。 このコマンドは、指定したディレクトリ内およびそのサブディレクトリ内のすべてのファイルを再帰的に検索し、ファイル名やファイルの中身に指定した文字列が含まれるファイルを表示します。

egrepコマンドはファイルの中身に対しても検索を行うため、ファイル名だけでなくファイル内のテキストにも対して検索が行われます。 ファイル名だけを対象とする場合は、-lオプションを使うことでファイル名だけを表示できます。

egrep -rl "文字列" /path/to/directory | xargs -I {} basename {}
ここで、xargsコマンドを使用してファイル名だけを表示しています。このコマンドは、指定されたディレクトリ内のファイルを検索し、ファイル名に指定した文字列が含まれるファイルの名前だけを表示します。

find x grep#

ファイルの中身を検索する場合、通常は grep コマンドを使用します。find コマンドと grep コマンドを組み合わせることで、特定のディレクトリ内のファイルを検索して、その中身に対しても検索を行うことができます。

find /path/to/directory -type f -exec grep -l '検索文字列' {} +
上記のコマンドは、指定したディレクトリ内のすべてのファイルに対して、"検索文字列" を検索し、含まれているファイルの名前を表示します。

egrep コマンドを使用して正規表現で検索する場合、基本的な構文は次のようになります。

find /path/to/directory -type f -exec egrep -l '正規表現パターン' {} +

ここで、-exec オプションを使用して、指定したディレクトリ内のすべてのファイルに対してコマンドを実行します。egrep コマンドは、拡張正規表現を使用してパターンを検索するためのものです。

例えば、ファイル内で数字が含まれる行を検索する正規表現パターン '[0-9]' を使用する場合:

find /path/to/directory -type f -exec egrep -l '[0-9]' {} +

Tip

egrep コマンドは grep -E のエイリアス