web-dev-qa-db-ja.com

Linuxのfindとgrepコマンドを一緒に

コマンドを見つけるか、この2つのコマンドを実行して出力を一覧表示できるLinuxスクリプトを作成しようとしています。

find . -name '*bills*' -print

これはすべてのファイルを印刷します

./may/batch_bills_123.log
./april/batch_bills_456.log
..

この結果から、Wordのgrepを実行したい

grep 'put' ./may/batch_bill_123.log 

そして得る

sftp > put oldnet_1234.lst

ファイル名とその一致を取得したいと思います。

./may/batch_bills_123.log   sftp > put oldnet_1234.lst
..
..
and so on... 

何か案は?

25
user3307574

Gnu grepで-Hオプションを探しています。

find . -name '*bills*' -exec grep -H "put" {} \;

ここに説明があります

    -H, --with-filename
      Print the filename for each match.
40
BMW

質問がより明確になったので、1つでこれを行うことができます grep

grep -R --include "*bills*" "put" .

関連するフラグ付き

   -R, -r, --recursive
          Read  all  files  under  each  directory,  recursively;  this is
          equivalent to the -d recurse option.
   --include=GLOB
          Search only files whose base name matches GLOB  (using  wildcard
          matching as described under --exclude).
26
BroSlow