find . -name *.rb
не работает на моем Ubuntu
Я должен сделать
find . -name "*.rb"
, чтобы заставить его работать.
Почему это?
Если у вас есть файл в текущем каталоге, оканчивающийся на .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