7

テストするファイルを含むディレクトリがあります。たとえば、AfileBC.

簡単にするために、これらの各ファイルに対して発行したいコマンドがあり、適切な出力が得られるコマンドを見つけたとします。

パイプが必要になりますmyCommand fileName | grep ExpectedResult(私の実際のケースでは、ライブラリでシンボルを探していたので、それは でしたreadelf -s | grep MySymbol)。

コマンドの結果に対してこのコマンドを発行したいfind

私は私の結果を見つける

find . -name *.so -print0 | xargs -0 myCommand | grep ExpectedResult

これは問題なく動作しますExpectedResult

私が受け取りたいのは (私が探しているファイルが であると仮定してB):

A
B
ExpectedResult
C

このようにして、結果が見つかったファイルを確認できました。grepファイルの内容を確認しようとしている場合は、 にスイッチが必要-printですfind。残念ながら、パイプされたコマンドが必要な場合、これではうまくいきません。

言うだけなので、明らかに、grep -Hどちらもしません(standard input)

ファイル名を「outgrepping」で上書きするにはどうすればよいですか? どういうわけかstderrに印刷しますか?

ファイル名を変数に保存したり、処理したりできることはわかっていますが、もっと簡単なアプローチが欲しいです。

4

2 に答える 2

8

簡単な方法の 1 つは、次のように言うことです。

find . -type f -name "*.so" -exec sh -c "echo {} && readelf -s {} | grep mysymbol" \;
于 2013-09-19T11:39:14.660 に答える