Suchen nach * .graphml-Dateien mit dem Suchdienstprogramm

0

Ich versuche, alle meine GRAPHML-Dateien unter dem aktuellen Verzeichnis in Bash zu finden. Also habe ich den folgenden Befehl ausgeführt:

find . -name *.graphml

Und ich bekomme die Fehlermeldung:

find: paths must precede expression
Usage: find [-H] [-L] [-P] [path...] [expression]

Was ist mit dem obigen Befehl falsch? Das Seltsame ist, dass es gut für andere reguläre Ausdrücke funktioniert.

Otavio Macedo
quelle

Antworten:

2

Schließen Sie das Muster immer in Anführungszeichen ein (z. B. *.graphmlin Ihrem Fall). Andernfalls wird es von der Shell vor dem Befehl find erweitert. Dies bedeutet, dass findkein Literal *graphmlübergeben wird, sondern vielmehr, wohin die Shell erweitert wird *.graphml.

Deshalb:

find . -name "*.graphml*"

Sehen:

  • man find die besagt: "Vergessen Sie nicht, das Muster in Anführungszeichen zu setzen, um es vor der Ausdehnung durch die Shell zu schützen."
  • Ein bisschen mehr zum Zitieren aus dem Advanced Bash Scripting Guide.
slhck
quelle