2009-03-14 6 views

ответ

5

Почему _ * следует указывать?

Если это не так, ваша оболочка может развернуть * для замены на файлы в текущем каталоге. Это, вероятно, не то, что вы хотели здесь.

+0

Справа, потому что команда find расширит оператор * glob. – ashawley

+0

проблема заключается в том, что оболочка расширяет ее до того, как команда find получает ее – Javier

9

Во-первых, оболочка расширяет все неуказанные *, чтобы соответствовать именам файлов в локальном каталоге.

После этого оболочка запускает команду find с этим списком имен файлов.

Как правило, вы не хотите, чтобы оболочка выполняла '*' globbing в локальном каталоге. Как правило, вы наматываете команду find для сопоставления имен файлов в других каталогах.

У оболочки есть несколько других вещей, которые она выполняет перед запуском команды. Замена $ VARIABLE - одна из таких.

2

Если вы его не процитируете, оболочка (bash?) Попытается расширить. если есть какой-либо файл, который начинается с «_» на текущем каталоге, вы получите что-то вроде:

find . \(-name _somefile _someother _file3 .... -or -newer while2 \) -type f -print 

, конечно, не то, что вы хотите. Я всегда цитирую шаблоны, просто чтобы убедиться, что оболочка не будет с ними работать

+0

Когда я использую find. -name c *, он находит меньше совпадений, чем поиск. -name "c *". Зачем? – MainID

+0

, вероятно, у вас есть файл, который начинается с c, а команда find получает все файлы с одинаковым именем, а не другие имена, начинающиеся с c – Javier

Смежные вопросы