我试图寻找文本Elapsed time
内的特定日志文件名vsim.log
。我不熟悉的grep,但一些谷歌搜索后,我发现grep -r
将允许我做递归搜索和grep -r "Elapsed time"
将对我的目录中的所有文件中的该短语进行递归搜索。根据这个链接,我可以做grep -r "Elapsed time" ./vsim*
递归搜索文件的目录,从vsim
开始,并查看这些文件的Elapsed time
。但是,当我试着这个我得到grep: No match.
,我知道是不正确的,因为我知道那些关键字存在的文件。我在搞什么?使用grep递归搜索特定关键字内的特定文件名的子目录
回答
从我的评论继续,您可以使用find
来定位文件vsim.log
如果你不知道它的确切位置,然后使用-execdir
选项find
到grep
文件,任期Elapsed time
,例如
find path -type f -name "vsim.log" -execdir grep -H 'Elapsed time' '{}' +
这将返回文件名以及匹配的文本,您可以根据需要简单地解析文件以隔离文件名。通过将find
命令的结果反馈到while read -r
循环中,您可以处理所有匹配的文件(如果您预计有多个文件匹配)。
while read -r match; do
# process "$match" as desired
echo "Term 'Elapsed time' found in file ${match%:*}"
done < <(find path -type f -name "vsim.log" -execdir grep -H 'Elapsed time' '{}' +)
其中:
find
是瑞士军刀为您的系统上查找文件path
可以是任何相对或绝对路径搜索(例如$HOME
或/home/dorojevets
)来搜索你的home目录选项
-type f
告诉找只查找文件(见man find
的链接处理)选项
-name "foo"
告诉找到只名为foo
找到文件的所有文件(通配符允许)的
-exec
和-execdir
选项允许用户执行对每个文件(由'{}'
表示)下面的命令的
grep -H 'Elapsed time' '{}'
是对每个文件名执行命令的
+
是什么告诉find
它已达到(与-exec
使用\;
)命令最后的结束时,
${match%:*}
参数扩展上的变量$match
用于解析filename
fromfilename:Elapsed time
通过grep -H
返回(只是被用来从$match
右边修剪一切,第一:
的%:*
)
给一个尝试和执行时间比较文件树的递归grep
。如果您知道包含所需信息的文件名的某些部分(或文件模式时间或权限集合等),那么您在此讨论中可能会丢失的内容是您使用的是find
。它可以在文件树中搜索数百万个文件,比每个文件递归地递归grep
快得多。如果你不知道什么文件可能包含所需的信息 - 然后使用grep
,只需等待...
这会在我执行的文件中,还是我将整个事件输入终端? – dorojevets
您只需将其输入到您的终端或将其包含在脚本中即可。 Bash非常灵活。您可以在命令行上执行任何操作,您可以放入脚本,反之亦然......如果在脚本中使用,请在第一行包含'#!/ bin/bash',告诉解释器使用'bash'而不是其他一些shell。我更新了'while'循环来吐出包含任何'Elapsed time'匹配文件的完整路径作为例子。 –
我也删除了'tmp',它只是我用来确认行为的目录名称。实际上,你告诉'find'开始搜索,例如'find/path/to/search'(它会递归搜索下面的所有内容)。它可以是*相对*或*绝对*路径。如果你在整个根文件系统上运行'find',那么包括'-mount'选项以防止搜索可能包含很多不是文件的'/ dev','/ proc'和'/ sys'系统目录。 –
尝试:
grep -r "Elapsed time" * --include vsim.log
还是这个答案Use grep --exclude/--include syntax to not grep through certain files。
我宁愿'''在'*'在这里(没有“命令行太长”的机会,没有机会匹配看起来像grep选项的东西,没有不一致的顶层隐藏文件跳过) –
- 1. 搜索带有特定目录及其子目录路径的特定文件
- 2. PHP - 搜索特定文件的目录和子目录?
- 3. 如何在特定目录结构下以递归方式grep特定文件名中的文本?
- 4. 使用find以非递归方式在目录中搜索特定文件。 AIX
- 5. Grep搜索特定字符故障
- 6. Lotusscript搜索窗口目录的子目录和文件。递归?
- 7. facebook graph api - 如何搜索帖子中的特定关键字
- 8. Grep以递归方式处理特定子文件夹组中的文件
- 9. 递归搜索grep
- 10. 如何使用Perl在目录中搜索特定文件?
- 11. 搜索Linux中特定内容的目录中的MS字文件
- 12. 递归创建特定目录中的文件夹
- 13. Linux - 如何递归搜索具有特定扩展名的文件?
- 14. Eclipse:在特定文件夹中搜索文件(给定特定关键字作为搜索条件)的键盘快捷键是什么?
- 15. 如何使用grep在递归搜索中排除目录?
- 16. 在文件夹/目录(PHP)中搜索特定的文件扩展名
- 17. 如何递归复制特定的文件,并保持父目录的名称
- 18. 算法搜索表示相关的特定关键字
- 19. 对特定目录使用特定的PHP文件
- 20. PHP搜索子阵列与特定键
- 21. php - 搜索特定的子字符串
- 22. 搜索特定的子字符串中
- 23. 搜索目录中的特定文件大小 - Windows/PHP
- 24. VIM搜索 - FuzzyFinder搜索特定文件
- 25. .htaccess从目录重定向到没有文件名的特定子目录
- 26. 如何使用Python /正则表达式在目录中递归地查找特定的子文件夹名称?
- 27. Ack:搜索具有特定扩展名的文件的目录树
- 28. 使用grep对任何特定长度的字符串进行递归搜索无空格
- 29. grep递归独家搜索
- 30. 以递归方式查找目录结构下的特定目录名称?
为什么不使用'find/path/to/search -type f -name“的结果vsim.log” '然后搜索一个或几个文件。它会更快。 –
@ DavidC.Rankin因为我对Linux不是很熟悉,并且我还没有真正意识到可用的功能,因为我仍然在学习。也就是说,目前速度并不是太多的因素,但我一定会读到发现,并且可能学会如你所说的去做。 – dorojevets
我提供了一个例子作为答案。如果您还有其他问题,请告诉我。 –