
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 .png
Datei 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 sub
darin und schließlich eine Datei namens myfile.txt
in sub
. Dann cd
in 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 find
und erhalten die erwarteten Ergebnisse:
~/test >find sub -name *.txt
sub/myfile.txt
Erstellen Sie nun eine Datei mit dem Namen cause.txt
und test
führen Sie sie find
erneut aus:
~/test >touch cause.txt
~/test >find sub -name *.txt
Dieses Mal wird nichts gefunden, weil die Shell das erweitert *
und Ihr find
Befehl folgendermaßen lautet:
~/test >find sub -name cause.txt
Es ist keine cause.txt
Datei 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