find . \(-name "_*" -or -newer while2 \) -type f -print
В командной строке linux, почему _ * следует указывать?Вопрос о команде «find»
find . \(-name "_*" -or -newer while2 \) -type f -print
В командной строке linux, почему _ * следует указывать?Вопрос о команде «find»
Почему _ * следует указывать?
Если это не так, ваша оболочка может развернуть *
для замены на файлы в текущем каталоге. Это, вероятно, не то, что вы хотели здесь.
Во-первых, оболочка расширяет все неуказанные *, чтобы соответствовать именам файлов в локальном каталоге.
После этого оболочка запускает команду find
с этим списком имен файлов.
Как правило, вы не хотите, чтобы оболочка выполняла '*' globbing в локальном каталоге. Как правило, вы наматываете команду find для сопоставления имен файлов в других каталогах.
У оболочки есть несколько других вещей, которые она выполняет перед запуском команды. Замена $ VARIABLE - одна из таких.
Если вы его не процитируете, оболочка (bash?) Попытается расширить. если есть какой-либо файл, который начинается с «_
» на текущем каталоге, вы получите что-то вроде:
find . \(-name _somefile _someother _file3 .... -or -newer while2 \) -type f -print
, конечно, не то, что вы хотите. Я всегда цитирую шаблоны, просто чтобы убедиться, что оболочка не будет с ними работать
Аналогичный вопрос: –