使用 grep/find 从整个目录和子目录文件中查找字符串 [关闭]
Posted
技术标签:
【中文标题】使用 grep/find 从整个目录和子目录文件中查找字符串 [关闭]【英文标题】:To find string from entire directories and sub-directory files using grep/find [closed] 【发布时间】:2021-09-11 07:15:30 【问题描述】:我有一些目录和子目录列表,我正在尝试从所有目录和子目录列表中搜索字符串。
我正在使用以下命令来执行此操作。但是当它在第一个搜索文件中找到结果时它会停止。我期望对所有文件执行搜索。请帮助我形成命令。
find dir/ -type f -exec grep -H 'missippi' +
例如:-
考虑我有 15 个文件,并且在 10 个文件中有名为“missippi”的字符串。应搜索所有 15 个文件并显示结果 10 个文件名。
【问题讨论】:
您搜索的是string
还是missippi
?您尝试过的命令应该可以工作。 grep -r 'missippi' dir
也应该可以工作,因为你似乎有 GNU grep
@Sundeep 我确实搜索过“密西比”
您正在运行的命令中没有任何内容会导致它在读取第一个文件后停止。也许找到所有文件的时间比您预期的要长,或者文件在您正在查看的目录下不存在,或者其余文件的 missippippi
拼写正确,因此它们不匹配missippi
.
好的,你的命令是正确的,问题是别的,但我们不能告诉你还有什么,因为我们在你的问题中看到的只是你的命令,所以我们所能做的就是提出建议你可以考虑的事情。您是否收到任何错误消息?命令完成后echo "$?"
会产生什么值?
将find
排除在外——grep -H 'missippi' dir/foo/file1 dir/bar/file2
的输出是什么,它们都是您知道包含missippi
的dir/
下文件的路径?
【参考方案1】:
find dir/ -type f | xargs grep 'missippi'
【讨论】:
【参考方案2】:使用这个命令:
grep -nr 'string'
如您所见,grep
本身可以递归搜索。 n
标志打印文件中出现的行号。
【讨论】:
以上是关于使用 grep/find 从整个目录和子目录文件中查找字符串 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章