grep通过显式文件列表

时间:2012-10-03 18:44:51

标签: regex grep

栈,

我们的库中有许多文件从未在后续项目中使用过。我们现在处于开发阶段,我们可以做一些好的内务管理并仔细删除未使用的库代码。我正在尝试优化我的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会将pattern-expression应用于每个文件的内容。 Grep输出将是使用特定库函数的项目文件的完全限定路径。

不返回任何项目文件的特定库函数的Grep命令是无关的,可以删除。

如何强制grep扫描存储在文本文件中的外部文件列表中的文件?  (从而删除目录扫描。)

3 个答案:

答案 0 :(得分:1)

使用'xargs'命令和管道(“|”)尝试一下。

答案 1 :(得分: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}

答案 2 :(得分:0)

我用google搜索windows args并找到了this

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

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