Да вы должны обновить ядро, когда система попросила вас это сделать
Проблема здесь в том, что шаблон подстановки имен файлов в командной строке будет расширен оболочкой (, если он соответствует каким-либо именам в текущем каталоге )до вызова утилиты.
Это означает, что фактическая выполняемая команда может быть чем-то вроде
find. ! -name thing1-custom.conf thing2-custom.conf thing3-custom.conf -delete
Это можно увидеть, если включить трассировку с помощью set -x
в командной строке перед вызовом команды. Используйте set +x
, чтобы позже отключить трассировку.
Ваша команда также должна была дать вам одно из сообщений об ошибке unknown option
или paths must precede expression
в зависимости от вашей реализации утилиты find
.
Здесь правильно цитировать шаблон из оболочки, как указал Майкл Гомер в комментариях (, он говорит, чтобы избежать *
, но цитирование всего шаблона, ИМХО, выглядит красивее и имеет то же самое. эффект):
find. ! -name '*custom.conf' -delete
Таким образом, шаблон передается в find
как есть, и утилита самостоятельно выполняет сопоставление со всеми именами в текущем каталоге.
Я бы также добавил к этому -type f
, чтобы мы были уверены, что будем работать только с обычными файлами.:
find. -type f ! -name '*custom.conf' -delete