栈,
我们的库中有许多文件从未在后续项目中使用过。我们现在处于开发阶段,我们可以做一些好的内务管理并仔细删除未使用的库代码。我正在尝试优化我的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扫描存储在文本文件中的外部文件列表中的文件? (从而删除目录扫描。)
答案 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,不知道它是否有效)