was macht dieser Befehl? Find-Befehl mit Optionen

was macht dieser Befehl? Find-Befehl mit Optionen

aber eine Frage, was macht dieser Befehl? Ich kenne den Befehl find, aber keine Optionen, wie Ausdrücke in Anführungszeichen und auch -exec und ...

find /var -name "[0-9]*test[A-Z]" -exec  {} /root/{}';'

Antwort1

find /varweist an find, die Suche beim Verzeichnis zu starten /var.

-name "[0-9]*test[A-Z]"ist das Suchmuster, das angewiesen wird, findnur Dateien/Ordner zurückzugeben, die dem Muster entsprechen "[0-9]*test[A-Z]". Wenn Sie die Suchzeichenfolge nicht in Anführungszeichen setzen, erweitert Ihre Shell dieses Suchmuster und versucht, das Ergebnis auszuführen. Indem Sie das Suchmuster in Anführungszeichen setzen, übergeben Sie es als Argument an find /var -name.

Der -exec...Teil der ursprünglichen Frage hat einen Syntaxfehler und sollte es auch sein -exec {} /root/{} ';'(beachten Sie das Leerzeichen davor, ';'das von Dessert und Daisy kommentiert wurde).
Er weist an, finddie folgenden Argumente auszuführen, wobei {}durch das Suchergebnis von ersetzt wird find. Normalerweise sollten Sie diese auch in Anführungszeichen setzen, um eine Shell-Erweiterung zu verhindern.

Zuletzt ';'definiert die Funktion, wie der -execAbschnitt mit den Suchergebnissen bei der Ausführung des Befehls umgehen soll. ';'weist find an, den Befehl -execfür jedes einzelne Suchergebnis auszuführen. Bei Verwendung von wird '+'stattdessen der -execBefehl mit allen erweiterten Suchergebnissen ausgeführt. Dies muss ebenfalls in Anführungszeichen gesetzt oder maskiert werden, um zu verhindern, dass die Shell es erweitert und ein Argument angibt find...-exec.

Im Folgenden finden Sie ein kleines Beispiel, das den Unterschied zwischen ";"und veranschaulicht."+"

[user@localhost test]$ find . -name "[0-9]*test[A-Z]" -exec echo "{}" ";"
./12ltestA
./1ltestA
[user@localhost test]$ find . -name "[0-9]*test[A-Z]" -exec echo "{}" "+"
./12ltestA ./1ltestA

verwandte Informationen