質問: 特定の文字列パターンを含まないファイルを見つけるにはどうすればよいですか? notにword fooname__が含まれている(grepname__を使用して)現在のディレクトリ内の files を見つけるにはどうすればよいですか?
回答: 問題私はインラインphpコードを使ってhtmlを書き出すために.phtmlファイルを使う大きなプロジェクトをリファクタリングする必要があります。代わりに 口ひげ テンプレートを使用したいです。文字列.phtmlを含まないすべてのnew mustacheジャイルは、まだ書き換える必要があるので見つけたいと思います。解決策find . -iname '*.phtml' -exec grep -h -e -o -c 'new mustache' {} \; | grep :0$ | sed 's/..$//'説明パイプの前に:検索find .このディレクトリからファイルを再帰的に探します-iname '*.phtml'ファイル名には.phtmlを含める必要があります(iでは大文字と小文字が区別されません)。-exec 'grep -h -e -o -c 'new mustache' {}'一致した各パスでgrepコマンドを実行しますgrep-h常にファイル名のヘッダを出力行で表示します。-e拡張正規表現としてパターンを解釈します(すなわちgrepをegrepとして振る舞わせる)。-o行の一致部分のみを印刷します。-c選択された行の数だけが標準出力に書き込まれます。これにより、.phtmlで終わるすべてのファイルパスのリストが、それぞれの中で文字列new mustacheが出現する回数の数とともに表示されます。$> find . -iname '*.phtml$' -exec 'grep -h -e -o -c 'new mustache' {}'\; ./app/myapp/customer/view/account/quickcodemanagestore.phtml:0 ./app/myapp/customer/view/account/studio.phtml:0 ./app/myapp/customer/view/account/orders.phtml:1 ./app/myapp/customer/view/account/banking.phtml:1 ./app/myapp/customer/view/account/applycomplete.phtml:1 ./app/myapp/customer/view/account/catalogue.phtml:1 ./app/myapp/customer/view/account/classadd.phtml:0 ./app/myapp/customer/view/account/orders-trade.phtml:0 最初のパイプgrep :0$は、このリストをフィルター処理して、:0で終わる行のみを含めます。$> find . -iname '*.phtml' -exec grep -h -e -o -c 'new mustache' {} \; | grep :0$ ./app/myapp/customer/view/account/quickcodemanagestore.phtml:0 ./app/myapp/customer/view/account/studio.phtml:0 ./app/myapp/customer/view/account/classadd.phtml:0 ./app/myapp/customer/view/account/orders-trade.phtml:0 2番目のパイプsed 's/..$//'は各行の最後の2文字を取り除き、ファイルパスだけを残します。$> find . -iname '*.phtml' -exec grep -h -e -o -c 'new mustache' {} \; | grep :0$ | sed 's/..$//' ./app/myapp/customer/view/account/quickcodemanagestore.phtml ./app/myapp/customer/view/account/studio.phtml ./app/myapp/customer/view/account/classadd.phtml ./app/myapp/customer/view/account/orders-trade.phtml