Команда & ldquo; find -name & rdquo; должен быть заключен в кавычки, иначе он не работает. Это почему?

find . -name *.rb

не работает на моем Ubuntu

Я должен сделать

find . -name "*.rb"

, чтобы заставить его работать.

Почему это?

3
задан 14 March 2012 в 02:19

1 ответ

Если у вас есть файл в текущем каталоге, оканчивающийся на .rb, он будет расширен оболочкой. Итак, если у вас есть один файл с именем «foo.rb», команда, которая будет выполнена, - find . -name foo.rb. («найдите файл с именем foo.rb»)

Еще хуже, если в текущем каталоге есть несколько файлов (скажем, «foo.rb» и «bar.rb»). Затем команда становится find . -name foo.rb bar.rb, что приведет к ошибке аргумента для поиска.

Чтобы предотвратить расширение оболочки шаблоном глобуса *.rb, вы должны либо заключить его в кавычки (подойдут одинарные или двойные кавычки), либо не указывать звездочку. Следующие команды имеют эквивалентное поведение:

find . -name "*.rb"
find . -name '*.rb'
find . -name \*.rb
0
ответ дан 14 March 2012 в 02:19

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

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