Команда "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
Другие вопросы по тегам