mac find -name *.png funktioniert nicht

mac find -name *.png funktioniert nicht

Ich versuche, rekursiv nach einem Dateinamen zu suchen, der auf .png endet. Mein Suchbefehl funktioniert einwandfrei für *.js, aber nicht für *.png.

~ >find dev -name *.png
~ >find dev -name bluerightarrow.png
dev/sandbox/ScheduleEditorTS/ScheduleEditorTS/img/bluerightarrow.png
~ >find dev -name *.js
dev/backup/ScheduleEditorTS/packages/jQuery.2.1.3/Content/Scripts/jquery-2.1.3-vsdoc.js
dev/backup/ScheduleEditorTS/packages/jQuery.2.1.3/Content/Scripts/jquery-2.1.3.js
... etc 

Antwort1

Sie haben wahrscheinlich eine .pngDatei in Ihrem aktuellen Verzeichnis und diese *wird von Ihrer Shell erweitert.

Hier ist eine praktische Erklärung. Erstellen Sie ein Verzeichnis namens test, dann ein weiteres namens subdarin und schließlich eine Datei namens myfile.txtin sub. Dann cdin test. Hier sind die Befehle, um das zu tun:

~ >mkdir -p test/sub
~ >touch test/sub/myfile.txt
~ >cd test

Sie können es ausführen findund erhalten die erwarteten Ergebnisse:

~/test >find sub -name *.txt
sub/myfile.txt

Erstellen Sie nun eine Datei mit dem Namen cause.txtund testführen Sie sie finderneut aus:

~/test >touch cause.txt
~/test >find sub -name *.txt

Dieses Mal wird nichts gefunden, weil die Shell das erweitert *und Ihr findBefehl folgendermaßen lautet:

~/test >find sub -name cause.txt

Es ist keine cause.txtDatei in vorhanden sub, daher gibt es keine Ergebnisse.

Um dieses Problem zu vermeiden, müssen Sie dem Asterisk einen Backslash voranstellen:

~/test >find sub -name \*.txt
sub/myfile.txt

verwandte Informationen