私が知る限り、grep
コンテンツに文字列を含むファイルを検索するためにのみ使用できます。
名前に文字列を含むファイルを検索するために使用できますか?マンページを読みましたが、そうは思いません。
grep
[gri:p]または[grep](IPA表記)でも発音されますか?私は電子を読んだ。
答え1
あなたは以下を探しているようですfind
:
find . -type f -name "*foo*"
foo
名前を含むファイル名は、現在のディレクトリとサブディレクトリから検索されます。
find . -maxdepth 1 -type f -name "*foo*"
foo
現在のディレクトリに含まれているファイル名のみを探します。
答え2
find
ファイル名のリストを生成した後に解析するために使用されますgrep
。
find . | grep 'stack[oO0]verfl[oO0]w'
ファイル名のリスト自体がファイルであるファイルシステムがない場合は、自分でこれを行う方法がわかりませんgrep
。
答え3
楽しむために、grep
それ自体を使用して現在のディレクトリに(空ではない)ファイル名を生成し、目的のgrep
ファイルを見つけるために別のファイルを生成できます。
grep -l . * 2>/dev/null | grep 'your_pattern'
オプションを指定せずにディレクトリを検索するように求めると文句を言うので、2>/dev/null
これは必須です。grep
-r
警告:名前に改行文字を含むファイルでは正しく機能せず、ドット(隠し)ファイルと空のファイルは無視されます。find
ここではこれが正しいアプローチです。
答え4
あなたの質問に答えるなら、いいえです。 Grepはファイル名で検索できず、提供されたテキストデータのみを検索できます。したがって、デフォルトでは2つのオプションがありますgrep
。
ユーザーが提供したファイルのリストを検索してから、grep
各ファイルを順番に開いて検索するように指示したパターンを見つけるか、標準入力を介してデータストリームを供給できます。
どちらの場合も、grep
入力ソース(STDINまたはファイル)の周りの「メタデータ」を見ることはできず、その内容のみを見ることができます。