Der folgende grep-Ausdruck listet erfolgreich alle EXE- und HTML-Dateien im aktuellen Verzeichnis und in den Unterverzeichnissen auf.
ls -R |grep -E .*[\.exe]$\|.*[\.html]$
Wie invertiere ich dieses Ergebnis, um diejenigen aufzulisten, die stattdessen keine .html- oder .exe-Datei sind? (Das heißt , !=
.)
-v
/--invert-match
nicht unbedingt umdreht, ob der Rückkehrcode vongrep
eine erfolgreiche Ausführung anzeigt, sondern stattdessen mit den Zeilen übereinstimmt, die sonst nicht übereinstimmen würden. Diejenigen, die den Rückkehrcode invertieren möchten (dh erfolgreich sind, wenn nicht alle Zeilen mit dem Muster übereinstimmen, sondern mindestens eine), sollten verwenden! grep
. Dies findet Verwendung in bedingten Ausdrücken, zif ! ls | grep -qE ".(\.exe)$"; then echo No .exe files in $(pwd); fi
.