grep
可以在输出的匹配行前加上文件名。这是 grep
的默认行为之一,具体取决于使用方式:
- 当搜索多个文件时,
grep
会自动在匹配行前加上文件名:# 搜索多个文件时,默认显示文件名 grep "pattern" file1.txt file2.txt file3.txt
输出会类似:file1.txt:这是包含pattern的行 file2.txt:这是另一个包含pattern的行
- 当只搜索单个文件时,默认不显示文件名,可通过
-H
选项强制显示:# 单个文件搜索时,强制显示文件名 grep -H "pattern" file.txt
输出会显示:file.txt:这是包含pattern的行
- 当搜索目录下所有文件时(结合
-r
递归选项),也会自动显示文件名:# 递归搜索目录,显示文件名 grep -r "pattern" ./directory/
相关常用选项:
-H
:总是显示文件名(即使只搜索一个文件)-h
:从不显示文件名(即使搜索多个文件)-n
:同时显示行号(可与文件名一起显示)
示例(同时显示文件名和行号):
grep -Hn "error" /var/log/*.log
输出会类似:
/var/log/syslog:123:2023-08-11 10:00:00 [error] 系统错误信息
/var/log/auth.log:45:2023-08-11 10:05:00 [error