我知道使用grep
来提取匹配特定字符串的行。现在我有一堆文件,我想知道哪一个包含特定的字符串。有没有办法使用bash命令来实现这一点?谢谢。bash命令输出包含特定字符串的文件名
回答
grep -l只列出文件名。
我用这一切的时候编辑包含一些
vi $(grep -l pattern) # edit all files containing pattern
请修改您的问题,如果这样做没有帮助足够的文件。
在我的第一个答案下发表了评论。有多种模式,其任务是获取匹配所有文件的文件列表。包括GNU的大多数greps都不实现正则表达式& intersection operator。我们可以做的是首先获得与第一个模式匹配的文件列表。然后将该文件列表提供给另一个grep以针对下一个模式进行测试等等。
一种方法是用命令替换,这是笨拙和休息时有在文件名中的空格:
grep -l pat2 $(grep -l pat1 $(grep -l pat0 *)))
# $(grep -l pat0 *) gets replaced with the names of files matching pat0
# then $(grep -l pat1 <list>) is further refined to include only those matching pat1
# then $(grep -l pat2 <that-list>) is refined once more
使用xargs的溶液在上述解决方案解决了一些弱点以及折叠远离嵌套。我们把每个grep的-l级输出的文件列表,并将其转换为论据,下一阶段使用xargs的:
grep -l pat0 * | xargs grep -l pat1 | xargs grep -l pat2
A“编译”这个可以写,例如
# the multigrep shell function takes these arguments and produces a pipeline
# like above, then evaluates it using eval.
multigrep pat0 pat1 pat2 *
当然,如果模式都只是固定的字符串,作为原始邮件中暗示,-F添加到里grep。
如果任何阶段产生一个空文件列表,我认为这个东西会中断,因为那么xargs会运行grep,并且会从stdin中获得材料。可以应用通常的/ dev/null参数hack。当然GNU xargs有--no-run-if-empty。 – Kaz 2012-03-05 23:58:09
非常感谢你! – user1224398 2012-03-06 00:10:25
GNU grep应该有-P(PCRE),它具有您正在寻找的正则表达式功能。 – jordanm 2012-03-07 01:58:02
- 1. 如何使用linux命令列出包含特定字符串的文件
- 2. Subversion:重命名所有包含特定字符的文件夹
- 3. 输出输入,如果它不包含特定的字符串
- 4. 重命名包含'©'字符的文件
- 5. 来自命令输出的grep特定字符串
- 6. 字符串包含特定文本
- 7. 在bash命令中包含字符串表达式
- 8. 获取包含特定字符串的特定文件夹中的文件
- 9. 命令行检查一个字符串变量是否包含特定文本
- 10. 用'bar'重命名包含子字符串'foo'的文件
- 11. unix命令行...如何grep并只显示包含字符串的文件名?
- 12. 如何搜索包含特定文本字符串的文件?
- 13. bash命令输出
- 14. Windows命令行命令在密码中包含特殊字符
- 15. 只包含特定字符串的文件的grep部分
- 16. 打印包含包含特定字符串的文件的所有目录
- 17. Bash确定变量名是否包含一个字符串
- 18. 如何搜索包含特定字符串的所有文件?
- 19. 使用Hadoop查找包含特定字符串的文件
- 20. SAS:读取包含特定字符串的所有文件
- 21. 测试,如果我的字符串包含一个特定的文件名
- 22. 获取从包含特定字符串
- 23. 不包含特定字符串
- 24. 寻找forrecords包含特定字符串
- 25. 搜索名称中包含特定字符串的文件并将其重命名
- 26. 仅当文件包含字符串时Bash才发送邮件
- 27. bash - 如何查找和压缩包含字符串的文件?
- 28. id在Jquery中包含特定的字符串名称
- 29. 在zip文件夹中包含字符串的grep文件名
- 30. 如何使用包含特定字符串的命令在grep regex命令中跳过具有特定字符串的注释?
非常感谢您的帮助。 '-l'确实是我需要的操作,但是如果有多个模式,我如何找到文件,而不是包含同时匹配所有模式的行? – user1224398 2012-03-05 22:31:39
伟大的卡兹!这个命令非常有帮助! :) – 2012-03-05 23:26:29
关于通过AND结合的多种模式,您可以执行的操作是遵循上面的想法。获取与pattern1匹配的文件列表。然后将其提供给另一个grep -l等。我会为此做出另一个答案。 – Kaz 2012-03-05 23:38:21