Ich versuche, „find“ in Kombination mit „grep“ zu verwenden, um alle PHP-Dateien auf meinem Webserver zu finden, die ein Wort (jede beliebige Zeichenfolge außer Leerzeichen) mit mehr als 50 Zeichen enthalten.
Ich habe diese Basis:
find . -name '*.php' -exec fgrep -q '.{50}' {} \; -print
Funktioniert aber nicht wie erwartet.
Danke
Antwort1
.
steht für alles außer Zeilenumbruchzeichen, einschließlich Leerzeichen und Tabulatoren. Deshalb wird Ihr regulärer Ausdruck Zeilen mit mehr als 50 Zeichen abgleichen.
Um Wörter abzugleichen, die mindestens 50 Zeichen lang sind, können Sie etwas wie das Folgende verwenden:
[^\s]{50}
[^\s]
stimmt mit allem überein, außer mit Leerzeichen. {50}
bedeutet, dass eine Folge von 50 solchen (nicht notwendigerweise identischen) Zeichen übereinstimmt.