
Я пытаюсь рекурсивно найти файл с расширением .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