Finden Sie alle Dateien und verwenden Sie das Ergebnis im Grep-Suchmuster

Finden Sie alle Dateien und verwenden Sie das Ergebnis im Grep-Suchmuster

Ich habe ein Beispiel gefunden, das eine Kombination aus „find“ und „xarg“ oder „exec“ verwendet, um im Ergebnis nach einem bestimmten Muster zu suchen (siehe Link).Hier.
Ich möchte jedoch das Ergebnis des Find-Befehls als Suchmuster für grep verwenden. So etwas wie der folgende Befehl, aber ich bin nicht sicher, wie ich ihn konstruieren soll.

find . -name "*.cgi" -printf '%f\n' | cut -d. -f1 | xarg grep 'find_result' *.html

Antwort1

Unter der Annahme, dass es sich um GNU handelt grepund dass Ihre Dateinamen keine eingebetteten Zeilenumbrüche enthalten:

find . -name '*.cgi' -printf '%f\n' | cut -d. -f1 | sort -u | fgrep -f - *.html

Antwort2

xargsDas brauchen Sie hier nicht , Sie können einfach grepdie Musterliste von stdin lesen:

mit GNU find:

find . -name '*cgi' -printf '%f\n' | grep -f - *html

ansonsten:

find . -name '*cgi' | cut -f2- -d/ | grep -f - *html

verwandte Informationen