Что & ldquo; пути должны предшествовать выражению & rdquo; значит при использовании находить?

Я хочу показать все файлы с расширением .bak.

kaykav@ubu2:~/Documents$ ls
cdIndex1-60  met.bak  tem.bak

Я ввожу cmd: $ find . -name *.bak

Я в правильном каталоге , Я получаю следующее сообщение:

find: пути должны предшествовать выражению: tem.bak

Что это значит? Справочные страницы не помогают.

5
задан 9 July 2012 в 05:01

7 ответов

Попробуйте поместить его в кавычки:

find . -name '*.bak'

Когда вы просто используете find . -name *.bak в этом каталоге, оболочка расширяет его до find . -name tem.bak met.bak (т.е. интерпретирует * как подстановочный знак)

7
ответ дан 25 July 2018 в 18:09

Попробуйте поместить его в кавычки:

find . -name '*.bak'

Когда вы просто используете find . -name *.bak в этом каталоге, оболочка расширяет его до find . -name tem.bak met.bak (то есть интерпретирует * как подстановочный знак)

7
ответ дан 31 July 2018 в 12:31

Попробуйте поместить его в кавычки:

find . -name '*.bak'

Когда вы просто используете find . -name *.bak в этом каталоге, оболочка расширяет его до find . -name tem.bak met.bak (то есть интерпретирует * как подстановочный знак)

7
ответ дан 4 August 2018 в 15:52

Попробуйте поместить его в кавычки:

find . -name '*.bak'

Когда вы просто используете find . -name *.bak в этом каталоге, оболочка расширяет его до find . -name tem.bak met.bak (т.е. интерпретирует * как подстановочный знак)

7
ответ дан 6 August 2018 в 00:30

Попробуйте поместить его в кавычки:

find . -name '*.bak'

Когда вы просто используете find . -name *.bak в этом каталоге, оболочка расширяет его до find . -name tem.bak met.bak (то есть интерпретирует * как подстановочный знак)

7
ответ дан 7 August 2018 в 17:55

Попробуйте поместить его в кавычки:

find . -name '*.bak'

Когда вы просто используете find . -name *.bak в этом каталоге, оболочка расширяет его до find . -name tem.bak met.bak (то есть интерпретирует * как подстановочный знак)

7
ответ дан 10 August 2018 в 06:45

Попробуйте поместить его в кавычки:

find . -name '*.bak'

Когда вы просто используете find . -name *.bak в этом каталоге, оболочка расширяет его до find . -name tem.bak met.bak (то есть интерпретирует * как подстановочный знак)

7
ответ дан 15 August 2018 в 18:39
  • 1
    Спасибо за ваш ответ. Я не уверен, что понимаю ответ, но он работает. Я думал, что * .bak означает «все» результаты, которые заканчиваются на .bak. – kaykav 9 July 2012 в 05:44
  • 2
    @kaykav Когда вы запускаете find . -name *.bak, третий аргумент командной строки, *.bak, раскрывается оболочкой, прежде чем он будет передан в find. Расширение оболочки преобразует его в разделенный пробелами список всех имен файлов в текущем каталоге, которые ему соответствуют, то есть всех файлов, имена которых состоят из нуля или более символов (*), за которыми следует .bak. Когда вы заключаете *.bak в кавычки, то экранирует подстановочный знак *, поэтому выражение передается без расширения. В качестве альтернативы вы можете использовать find . -name \*.bak. – Eliah Kagan 9 July 2012 в 08:19

Другие вопросы по тегам:

Похожие вопросы: