显示包含某个单词的所有文件的匹配计数

显示包含某个单词的所有文件的匹配计数

用于仅识别目录下/etc包含单词“HOST”的文件中所有行的匹配计数的单个命令是什么?

我应该只列出匹配的文件并抑制任何错误消息。

答案1

要计算匹配数,仅列出文件名和计数:

grep -src HOST /etc/*

示例输出:

/etc/postfix/postfix-files:1
/etc/security/pam_env.conf:6
/etc/X11/app-defaults/Ddd.3.3.11:1
/etc/X11/app-defaults/Ddd:1
/etc/zsh/zshrc:0
/etc/zsh/zshenv:0

-c选项抑制正常输出并打印每个文件的匹配计数。

如果您想要隐藏计数为零的文件:

grep -src HOST /etc/* | grep -v ':0$'

要打印任意数量输入文件的每个匹配行的行号 ( -n) 和文件名 ( ):-H

grep -srnH HOST /etc/*

示例输出:

/etc/lynx-cur/lynx.cfg:254:.h2 LYNX_HOST_NAME
/etc/lynx-cur/lynx.cfg:255:# If LYNX_HOST_NAME is defined here or in userdefs.h, it will be
/etc/X11/app-defaults/Ddd.3.3.11:8005:    DDD 3.3.11 (@THEHOST@) gets @CAUSE@\n\
/etc/X11/app-defaults/Ddd:8010:    DDD 3.3.12 (@THEHOST@) gets @CAUSE@\n\

该选项-r导致grep在指定目录下各级的每个子目录中递归搜索文件。该-s选项会抑制错误消息。

要抑制二进制文件的匹配,请使用该-I选项。

man grep了解更多信息。

答案2

它不是一个命令,而是一行

就像是

 grep -r ',,HOST' . | wc -l

答案3

这个问题的措辞有点奇怪。它首先要求你给出所有文件中匹配的行数,然后要求你列出文件名。

计算所有文件中匹配的行数:

grep -R “主机” /etc 2> /dev/null | wc -l

列出文件名:

grep -Rl “主机” /etc 2> /dev/null

答案4

grep -c HOST *

…应该这么做。

相关内容