web-dev-qa-db-ja.com

特定の文字で始まり、特定の単語を含むファイルのLinuxgrep

「h」で始まり「enu」を含むファイル名をファイルディレクトリで検索しようとしていますか?

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

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

ファイル名を確認するには、find-name条件を使用します。通常のファイル名パターンを取る必要があるため、h*enu*は必要なものと一致します。

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

grepは、代わりにファイルの内容を1行ずつ確認するため、パターンに一致する行を検索します。

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

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

grepは、-nameのグロブワイルドカードではなく、正規表現を想定しています。また、grepは一致を探しますwithin-nameとの完全一致とは対照的に、行の先頭にパターンを固定するために^/dev/nullは、一致するファイルが1つしかない場合でも、一致する行ごとにファイル名が常に出力されるようにするためだけにあります。 GNU grepの実装では、代わりに-Hオプションを使用できます。

3
ilkkachu