Kombination völlig entgegengesetzter Grep-Optionen

Kombination völlig entgegengesetzter Grep-Optionen

Ich tat:grep -r -H -L txt ~

Undgrep -r -l -L txt ~

Werden alle Dateien aufgelistet? Ich erhalte nämlich eine sehr lange Ausgabe.

Antwort1

Ihre beiden Befehle sind genau gleich. Sie durchsuchen beide rekursiv Ihr Home-Verzeichnis und listen Dateien auf, die nicht das Muster „txt“ enthalten.

Um zu beweisen, dass sie die gleiche Leistung haben, können Sie

diff <(grep -r -H -L txt ~) <(grep -r -l -L txt ~)

Um es etwas genauer zu beschreiben …

grep -r -H -L

ist das gleiche wie

grep -r -L

-H(Dateinamen drucken) ist bei jedem grepAufruf impliziert, der mehr als eine Datei betrifft. Das ist der -LFall, da alle Dateien aufgelistet werden, die nicht dem angegebenen Muster entsprechen.

Nächste...

grep -r -l -L

ist das gleiche wie

grep -r -L

Dies liegt einfach daran, dass -lund -Lwidersprüchliche Optionen sind und in solchen Fällen die zuletzt angezeigte Flagge alle vorherigen widersprüchlichen Flaggen überschreibt. (Dank an@don_crisstifür den Hinweis.)

Sie haben also tatsächlich grep -r -Lund grep -r -L.

verwandte Informationen