Linux grep は特定の文字で始まり、特定の単語を含むファイルを探します。

Linux grep は特定の文字で始まり、特定の単語を含むファイルを探します。

「h」で始まり、「enu」を含むファイル名を見つけるためにファイルディレクトリを検索してみますか?

これが私が今まで持っているものです。 1つのコマンドラインで2つのgrepステートメントを処理する方法がわかりません。

find fs282/path/web/en_US.dic -exec grep "^h" {} \;

答え1

ファイル名を表示するには-nameを使用しますfind。一般的なファイル名パターンでなければならず、したがってh*enu*要件と一致する必要があります。

find /some/path -name "h*enu*"

grep代わりに、ファイルの内容を1行ずつ調べて、パターンに一致する行を見つけることができます。

find /some/path -type f -exec grep '^h.*enu' /dev/null {} +

(出力はファイル名ではなく行になります。)

grepglobワイルドカードではなく正規表現が必要です-name。また、grep一致するものを見つけてください。以内に正確に一致するのではなく、行を使用して-nameパターン^を行の先頭に固定します。/dev/null一致するファイルが1つしかない場合でも、一致するすべての行のファイル名が常に印刷されるようにします。 GNU実装ではgrepこのオプションを使用できます-H

関連情報