【Linux】grepコマンドでファイル名とディレクトリ名を検索する方法を紹介

linux_grep_ディレクトリ_ファイル オペレーティングシステム

以前grepコマンドの使い方を紹介しました.

この記事ではおすすめとして -rオプションについて触れました.
-rオプションを使うとディレクトリにあるすべてのファイルの中身を検索できます.

では,特定の文字列を含むファイル名やディレクトリ名を調べたいときはどうすれば良いでしょうか.

今回はコマンドを組み合わせてファイル名とディレクトリ名を調べる方法を紹介します.

【おさらい】-rオプション ディレクトリごと検索する

-rオプションを使うとディレクトリにあるすべてのファイルを検索できました.

$ grep -r <検索パターン> <ディレクトリ>
-rオプションでディレクトリにあるすべてのファイルを検索する|クリックして拡大できます
$ grep -r 筋トレ Linux/

grep -rコマンドで調べれるのはファイルの中身です.
ファイル内を見て筋トレがあるファイルとその行を表示しました.

そのため,ファイル名やディレクトリ名に検索パターンが含まれていてもマッチしません.

「筋トレ」を含むディレクトリとファイルは検索結果に含まれない|クリックして拡大できます

「筋トレ」という名のディレクトリを追加して実行しました.

ディレクトリに検索パターンの文字列(筋トレ)がありますが,実行結果には含まれていません.

ディレクトリ名やファイル名を調べるときはlsコマンドとgrepコマンドを組み合わせて使いましょう!

lsコマンドとgrepコマンドを組み合わせる

指定する文字列が入ったディレクトリ名やファイルを調べるときは ls と grepコマンドを使います.

ls <ディレクトリ> | grep <検索パターン>
検索パターンに一致するディレクトリを調べる|クリックして拡大できます
$ ls Linux/ | grep 筋トレ

検索パターンである「筋トレ」を含むディレクトリとファイルだけ表示できました.

lsコマンドの結果をgrepコマンドで検索しているため,このような結果になりました.

ファイルの中身ではなく,ディレクトリやファイル名を検索したいときは ls と grep コマンドを組み合わせましょう!

まとめ

今回はファイル名とディレクトリ名を検索する方法を紹介しました.

grep -rコマンドはファイルの中身を検索しました.
そのためファイル名やディレクトリ名は検索対象に含まれません.

ls ディレクトリ | grep 検索パターンはファイル名とディレクトリ名を検索しました.
ファイルの中身に検索パターンが入っていても実行結果には表示されません.

それぞれのコマンドは別の対象を検索します.

検索対象に合わせてコマンドを使い分けましょう!