Wie kann man bestimmte Dateinamen mit "find" ignorieren?
Einer meiner Lieblings-BASH-Befehle ist:
find . -name '*.*' -exec grep 'SearchString' {} /dev/null \;
, der den Inhalt aller Dateien im und unterhalb des aktuellen Verzeichnisses nach dem angegebenen SearchString durchsucht. Als Entwickler hat sich dies manchmal als nützlich erwiesen.
Aufgrund meines aktuellen Projekts und der Struktur meiner Codebasis würde ich diesen BASH-Befehl jedoch gerne noch weiter ausbauen, indem ich keine Dateien durchsuche, die sich in oder unterhalb eines Verzeichnisses befinden, das “.svn” enthält, oder alle Dateien, die mit “.html” enden
Die MAN-Seite für find hat mich allerdings etwas verwirrt. Ich habe versucht, -prune zu verwenden, und das ergab ein seltsames Verhalten. In einem Versuch, nur die .html-Seiten (für den Anfang) zu überspringen, versuchte ich:
find . -wholename './*.html' -prune -exec grep 'SearchString' {} /dev/null \;
und erhielt nicht das Verhalten, das ich mir erhoffte. Ich denke, dass ich den Sinn von -prune vielleicht nicht verstehe. Könnt ihr mir helfen?
Danke