mac find -name *.png не работает

mac find -name *.png не работает

Я пытаюсь рекурсивно найти файл с расширением .png. Моя команда find отлично работает для *.js, но не для *.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 

решение1

.pngВероятно, в вашем текущем каталоге есть файл, который *расширяется вашей оболочкой.

Вот практическое объяснение. Создайте каталог с именем test, затем еще один с именем subвнутри него и, наконец, файл с именем myfile.txtв sub. Затем cdв test. Вот команды для этого:

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

Можете бегать findи получите ожидаемые результаты:

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

Теперь создайте файл с именем cause.txtи testзапустите его findснова:

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

На этот раз ничего не найдено, потому что оболочка расширяет *и ваша findкоманда становится такой:

~/test >find sub -name cause.txt

cause.txtФайла в нет sub, поэтому результатов нет.

Чтобы избежать этой проблемы, вам необходимо экранировать звездочку обратной косой чертой:

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

Связанный контент