Suchen nach Dateien mit einem Sternchen (*) im Dateinamen

Suchen nach Dateien mit einem Sternchen (*) im Dateinamen

Wie finde ich Dateien mit einem Sternchen im Dateinamen? Eine andere Möglichkeit, die Frage zu stellen, ist: Wie kann ich erreichen, dass sich ein Sternchen NICHT wie ein Platzhalter verhält?

Als Platzhalter würde ich normalerweise etwa Folgendes verwenden:

$ find ./ -type f \( -iname \*.jpg \)

Wenn ich nicht entkomme, *erhalte ich folgendes

$ find ./ -type f \( -iname * \)
find: paths must precede expression: .....
find: possible unquoted pattern after predicate `-iname'?

Da der Fehler darauf hindeutet, dass *in Anführungszeichen gesetzt werden muss, habe ich find ./ -type f \( -iname "*" \)oder versucht find ./ -type f \( -iname '*' \), aber dies funktioniert auch als Platzhalter.

Antwort1

Die richtige Lösung scheint die Verwendung von eckigen Klammern zu sein [ ]. Natürlich habe ich es 5 Minuten nach dem Posten gelöst. Ich hoffe, das hilft jemandem in der Zukunft.

$ find . -name '*[*]*' -type f

Man kann aber auch den Backslash verwenden, um das *for zu umgehen.find

$ find . -name '*\**' -type f

Einfache Anführungszeichen werden verwendet, um sicherzustellen , dass *, [und \verlieren die besondere Bedeutung, die sie auch fürdie Muschel.

Antwort2

Seien Sie vorsichtig. find(1) beschwert sich über etwas ganz anderes. Nehmen wir an, Sie haben im aktuellen Verzeichnis die Dateien a, b, c. Wenn Sie beispielsweise Folgendes aufrufen:

find ./ -type f \( -iname * \)

was findpassiert, ist ./ -type f ( -iname a b c )(die Shell erweitert '*', bevor sie die resultierende Befehlszeile an sie übergibt, die Klammern werden in Anführungszeichen gesetzt; genau dasselbe Ergebnis für ***). Wenn Sie schreiben:

find ./ -type f \( -iname \* \)

es wird ./ -type f ( -iname * ),

verwandte Informationen