Я пытаюсь найти все мои файлы GRAPHML в текущем каталоге в Bash. Поэтому я запустил следующую команду:

find . -name *.graphml

И я получаю сообщение об ошибке:

find: paths must precede expression
Usage: find [-H] [-L] [-P] [path...] [expression]

Что не так с командой выше? Странно то, что он отлично работает для других регулярных выражений.

1 ответ1

2

Всегда заключайте шаблон в кавычки (например, *.graphml в вашем случае). В противном случае он будет расширен оболочкой перед командой find. Это означает, что find не передает буквальный *graphml , а скорее то, к чему расширяется оболочка *.graphml .

Следовательно:

find . -name "*.graphml*"

Увидеть:

  • man find что говорит: «Не забудьте заключить шаблон в кавычки, чтобы защитить его от расширения оболочкой».
  • Немного больше о цитировании из Расширенного руководства по написанию сценариев Bash.

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