2

スタック、

ライブラリには、後続のプロジェクトで使用されなかった多くのファイルがあります。現在、適切なハウスキーピングを行い、未使用のライブラリ コードを慎重に削除できる開発段階にあります。grep コマンドを最適化しようとしていますが、現在の実装はかなり遅いです。

grep --include=*.cpp --recursive --files-with-matches <library function name> <network path to subsequent projects>

主な理由は、プロジェクト パスが広大であり、ディレクトリ ツリーをナビゲートしてファイル マスクを適用するだけで多くの時間が費やされることです。この grep コマンドは、同じプロジェクト ファイルのセットに対して何度も呼び出されます。

呼び出しごとにディレクトリ ツリーをナビゲートするのではなく、ローカル ディスクに保存されている静的なファイルリストを参照するために grep を実行したいと考えています。

これに似たもの:

grep --from-filelist=c:\MyProjectFileList.txt

は次のMyProjectFileList.txtようになります。

\\server1\myproject1\main.cpp
\\server1\myproject1\func1.cpp
\\server1\myproject2\main.cpp
\\server1\myproject2\method.cpp

grep は、これらの各ファイルの内容にパターン式を適用します。grep 出力は、特定のライブラリ関数を使用するプロジェクト ファイルの完全修飾パスになります。

プロジェクト ファイルを返さない特定のライブラリ関数の grep コマンドは無関係であり、削除できます。

テキストファイルに保存された外部ファイルリストからファイルをスキャンするように grep に強制するにはどうすればよいですか? (これにより、ディレクトリのスキャンが削除されます。)

4

3 に答える 3

1

「xargs」コマンドとパイプ (「|」) を使用して少し試してみてください。

于 2012-10-03T18:56:24.787 に答える
0

私はWindowsの引数をグーグルで検索し、これを見つけまし:

FOR /F %k in (filelist.txt) DO grep yourgrepargs  %k

(ただし、Linuxを使用していますが、機能するかどうかはわかりません)

于 2012-10-03T22:55:37.500 に答える