以前grepコマンドの使い方を紹介しました.
この記事ではおすすめとして -rオプションについて触れました.
-rオプションを使うとディレクトリにあるすべてのファイルの中身を検索できます.
では,特定の文字列を含むファイル名やディレクトリ名を調べたいときはどうすれば良いでしょうか.
今回はコマンドを組み合わせてファイル名とディレクトリ名を調べる方法を紹介します.
【おさらい】-rオプション ディレクトリごと検索する
-rオプションを使うとディレクトリにあるすべてのファイルを検索できました.
$ grep -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 検索パターンはファイル名とディレクトリ名を検索しました.
ファイルの中身に検索パターンが入っていても実行結果には表示されません.
それぞれのコマンドは別の対象を検索します.
検索対象に合わせてコマンドを使い分けましょう!