回答:
pv
パイプで動作します(コマンドではありません)-パイプラインの特定のポイントを通過したデータ量を示すボリュームゲージです。
あなたのgrepコマンドはパイプラインではありません(|
- pipe operator
どこにも見つかりません)-それはただ1つのコマンドで実行されます。 pv
ここであなたを助けることはできません、あなたgrep
はそれが実際にすべての入力ファイルでそのことをしていることを信頼しなければなりません。
find、pv、xargs&grep(それは有望に思えるかもしれませんが、意味のある結果を得るには、出力の大きさを通知する必要があります)と一緒に何かを考え出すことができます。find . -name "*.rb" | pv | xargs grep [regex]
pv
find
率直に言って、それは価値があるよりも多くの仕事のようです。単にgrepを実行し、辛抱強く待って、完了したら出力を処理してください。
さらに2つの方法:
for file in *.rb; do echo $file; grep "string" $file >> output.txt; done
または、元のコマンドの実行中に別のシェルでgrepコマンドのpidを見つけて、次のようにします。
strace -q -s 256 -e trace=open -p [pid] 2>&1 | head
上記の両方で、grepコマンドが現在処理しているファイルが表示されます。あなたはファイルの総数を見つけることができます:
ls -l *.rb | wc -l
最後に、これを使用して、現在のファイルがリストにある番号を確認します。
ls -l *.rb | grep -n [the current filename]
PS私の回答では、すべてのファイルが1つのディレクトリにあると想定しています。そうでない場合は、find
代わりにls
、*.rb
thinice が示すように使用する必要があります。
もう試しましたか
grep -R "string" *.rb | pv
再帰的であるため、検索するデータの合計ビット数がわからないため、実際に機能するかどうかはわかりませんか?
pv
-grepの出力で動作します(したがって、フル入力サイズを指定した場合でもpv
、パイプの終わりから出力が出力されるのを見ているだけです-それはかなり下になります