Я подключен к серверу CentOS через SSH из macOS. Когда я пытаюсь find с подстановочным знаком в начале, он, кажется, ищет только текущий напрямую, без рекурсии. Но если я ставлю подстановочный знак в конце имени файла, это работает. У меня нет этой проблемы на локальном Mac.

# find . -name *.inc
./copra_xml_gen.settings.inc
#
# find . -name auth.inc
./common_v4/auth.inc
./v5_old/common/auth.inc
./common/auth.inc
./v6/common/auth.inc
./v5/common/auth.inc
#
# find . -name auth*
./common_v4/auth.inc
./v5_old/common/auth.inc
./common/auth.inc
./v6/common/auth.inc
./v5/common/auth.inc

1 ответ1

2

Оболочка выполняет расширение имени файла перед вызовом find . См. Https://www.gnu.org/software/bash/manual/bash.html#Shell-Expansions.

Вы хотите защитить шаблон от оболочки:

find . -name '*.inc'

или же

find . -name \*.inc

В вашем текущем каталоге:

  • у вас есть файл, соответствующий *.inc и оболочка заменяет это слово на фактическое имя файла в вашей команде поиска.
  • у вас нет файла, который соответствует auth* , поэтому шаблон не заменяется.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .