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