it-swarm-eu.dev

Jak vrátit název souboru a číslo řádku s hledáním ... -exec grep?

Jak mohu při použití find vracet název souboru a číslo řádku při hledání řetězce? Podařilo se mi vrátit název souboru jedním příkazem a čísla řádků s jiným, ale zdá se, že je nemůžu kombinovat.

Názvy souborů: find . -type f -exec grep -l 'string to search' {} \;

Čísla řádků: find . -type f -exec grep -n 'string to search' {} \;

47
Danny_Joris

Přepínač příkazového řádku -H vynutí grep k vytištění názvu souboru, a to i s jedním souborem.

% grep -n 7 test.in
7:7
% grep -Hn 7 test.in
test.in:7:7

   -H, --with-filename
          Print the filename for each match.

Všimněte si, že jak Kojiro říká v komentář , toto není součástí standardu POSIX; je v obou GNU a BSD grep), ale je možné, že některé systémy to nemají (např. Solaris).

56
Kevin
find . -type f -exec grep -n 'string to search' /dev/null {} +

(nebo s GNU grep, viz -H možnost)

22
Stéphane Chazelas