顯示包含某個單字的所有檔案的符合計數

顯示包含某個單字的所有檔案的符合計數

用於僅識別/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 |廁所-l

要列出檔案名稱:

grep -Rl "主機" /etc 2> /dev/null

答案4

grep -c HOST *

……應該這樣做。

相關內容