Grep

僅使用 grep 輸出包含模式的文件名(不帶行輸出)

  • February 1, 2022

我想列出包含模式的文件,而不輸出包含模式的行。我認為可以使用grep. 在這個意義上我應該如何使用grep?例如,以下命令給出所有文件中包含“stringpattern”(不區分大小寫)的所有行.txt。我只想擁有文件的名稱(±行號)。

grep -ni stringpattern *.txt

理想情況下,如果字元串/模式在一個文件中出現多次,我希望該文件有多行輸出。

如果您只需要匹配的文件:

grep -lie pattern -- *.txt

我認為您不能僅使用 grep 來僅列印文件和行號,因為使用 option -n,它會在每一行 ‘file:line:match’ 上輸出。如果文件名既不包含換行符也不包含:換行符,您可以通過管道將cut其僅獲取您想要的內容。

grep -nie pattern -- /dev/null *.txt | cut -d: -f 1,2

/dev/null需要*.txt擴展為僅一個文件名的情況,grep否則將不會列印文件名。使用 GNU 實現grep或兼容,您可以使用-H/--with-filename代替以確保始終列印文件名。

引用自:https://unix.stackexchange.com/questions/688561