Skip to content Skip to main navigation Skip to footer

Grep:grep匹配行所在文件的文件名

当我们在大量文件中使用grep命令来查找匹配行,有时候可能需要只显示匹配行所在文件的文件名,那么如何才能只显示匹配行所在文件的文件名呢?

普通的grep命令查找:

[root@devops ~]# grep user1 /etc/*
/etc/group:user1:x:501:
/etc/group:user1add:x:503:
/etc/group-:user1:x:501:
/etc/group-:user1add:x:503:
/etc/gshadow:user1:!::
/etc/gshadow:user1add:!::
/etc/gshadow-:user1:!::
/etc/gshadow-:user1add:!::
/etc/passwd:user1:x:501:501::/home/user1:/bin/bash
/etc/passwd:user1add:x:503:503::/home/user1add:/bin/bash
/etc/passwd-:user1:x:501:501::/home/user1:/bin/bash
/etc/passwd-:user1add:x:503:503::/home/user1add:/bin/bash
/etc/shadow:user1:!!:16176:0:99999:7:::
/etc/shadow:user1add:!!:16176:0:99999:7:::
/etc/shadow-:user1:!!:16176:0:99999:7:::
/etc/shadow-:user1add:!!:16176:0:99999:7:::
[root@devops ~]# 

从上面的输出结果,可以看出来第一个字段是文件名,在grep命令里,可以使用-l选项来控制grep命令的输出,只显示匹配行的文件名。

[root@devops ~]# grep -l user1 /etc/*
/etc/group
/etc/group-
/etc/gshadow
/etc/gshadow-
/etc/passwd
/etc/passwd-
/etc/shadow
/etc/shadow-
[root@devops ~]#

如果想显示不匹配行所在文件的文件名,可以使用-L选项:

[root@devops ~]# grep -l user1 /etc/*
/etc/group
/etc/group-
/etc/gshadow
/etc/gshadow-
/etc/passwd
/etc/passwd-
/etc/shadow
/etc/shadow-
[root@devops ~]#

0 Comments

There are no comments yet

Leave a comment

Your email address will not be published.