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 回答
1

尝试以下操作:

while read line; do echo -e "$line"; done < list_of_files.txt | xargs -0 grep **YOUR_GREP_ARGS_HERE**

或在安装了 Powershell 的 Windows 环境中尝试...

Get-Content List_of_files.txt | Foreach-Object {grep $_ GREP_ARGS_HERE}
于 2012-10-03T19:06:43.200 回答
0

我搜索了 windows args 并发现了这个

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

(但我使用linux,不知道它是否有效)

于 2012-10-03T22:55:37.500 回答