it-swarm.com.de

Wie kann ich sowohl den Dateinamen als auch die Zeilennummer mit find ... -exec grep zurückgeben?

Wie gebe ich bei Verwendung von find den Dateinamen und die Zeilennummer zurück, wenn ich nach einer Zeichenfolge suche? Es gelingt mir, den Dateinamen in einem Befehl und die Zeilennummern mit einem anderen zurückzugeben, aber ich kann sie scheinbar nicht kombinieren.

Dateinamen: find . -type f -exec grep -l 'string to search' {} \;

Linien Nummern: find . -type f -exec grep -n 'string to search' {} \;

47
Danny_Joris

Der Befehlszeilenschalter -H zwingt grep, den Dateinamen auch mit nur einer Datei zu drucken.

% 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.

Beachten Sie, dass, wie Kojiro in ein Kommentar sagt, dies nicht Teil des POSIX-Standards ist; Es ist sowohl in GNU als auch in BSD grep enthalten, aber es ist möglich, dass einige Systeme es nicht haben (z. B. Solaris).

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

(oder mit GNU grep, siehe -H Möglichkeit)

22