1353 Stimmen

Wie kann ich rekursiv grep, aber nur in Dateien mit bestimmten Erweiterungen?

Ich arbeite an einem Skript, um bestimmte Verzeichnisse mit grep zu durchsuchen:

{ grep -r -i CP_Image ~/path1/;
grep -r -i CP_Image ~/path2/;
grep -r -i CP_Image ~/path3/;
grep -r -i CP_Image ~/path4/;
grep -r -i CP_Image ~/path5/; }
| mailx -s GREP email@domain.example

Wie kann ich die Ergebnisse nur auf die Erweiterungen .h und .cpp beschränken?

1voto

Tom Punkte 375

Hier ist eine Methode, die ich normalerweise verwende, um .c und .h Dateien zu finden:

tree -if | grep \\.[ch]\\b | xargs -n 1 grep -H "#include"

Oder wenn du auch die Zeilennummer brauchst:

tree -if | grep \\.[ch]\\b | xargs -n 1 grep -nH "#include"

0voto

nvd Punkte 2538

Wenn Sie Erweiterungen aus der Ausgabe eines anderen Befehls, z.B. "git", filtern möchten:

files=$(git diff --name-only --diff-filter=d origin/master... | grep -E '\.cpp$|\.h$')

for file in $files; do
    echo "$file"
done

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X