Есть ссылка из /lib/modules/"Kernel -версия" ->/lib64/modules/"Kernel -версия"
Мне не удалось заставить ссылку работать в initrd, поэтому я скопировал ее в каталог /lib64/modules, так как торопился. Существует также зависимость от модуля ptp.
Меня смутило то, что они используют встроенный initrd в файле ядра. Раньше у них был драйвер e1000e в старых версиях systemrescuecd
.find
's -name
принимает подстановочный шаблон shell/glob/ fnmatch()
, а не регулярное выражение.
GNU find
's -regex
нестандартное расширение -действительно принимает тип regexp (старого стиля emacs по умолчанию ), но это применяется к полному пути (, как и стандартное -path
, который также принимает подстановочные знаки ), а не только имя файла (и привязывается неявно)
Таким образом, чтобы найти файлы типа в каталоге , чье имя начинается с machine
, вам потребуется:
find. -name 'machine*' -type d
Или:
find. -regextype posix-extended -regex '.*/machine[^/]*' -type d
(для этого конкретного регулярного выражения вам не нужно -regextype posix-extended
, так как механизм регулярных выражений по умолчанию также будет работать)
Обратите внимание, что для первого, совпадающего с именем файла, также должен быть допустимый текст в локали, а для второго — полный путь, который должен быть допустимым текстом.
Аргумент для -name
очень похож на глобус оболочки, поэтому он неявно связан с началом и концом имени файла, которому он соответствует, и вам нужно *
, чтобы указать, что может быть больше:
find. -type d -name 'machine*'
Для ваших альтернатив -regex
задокументировано (см.man find
)как "совпадение по всему пути, а не поиск ", также неявно привязанное к началу и концу совпадения, поэтому вам понадобится
find. -type d -regextype posix-extended -regex '(.*/)?machine[^/]*'
Когда вы говорите, что «пробовали также с -name
», вы забыли, что для -regex
требуется параметр, поэтому он использовал -name
в качестве этого параметра, а затем подавился неожиданным'^machine'
Тест -name
из find
не принимает регулярные выражения, он принимает файловые глобусы. ^
не имеет особого значения в globs, поэтому ваша команда ищет каталоги с фактическим именем ^machine
. Вам нужно это, чтобы найти все каталоги, имя которых начинается сmachine
:
find. -type d -name 'machine*'
Другая ваша попытка не удалась, потому что -regex
похоже на -name
. Это не флаг для включения, вам нужно передать ему регулярное выражение в качестве входных данных. Здесь вы ничего не дали,так find
жаловался. Также обратите внимание, что тест -regex
будет пытаться сопоставить весь путь, а не только имя. Правильным способом сделать то, что вы хотите, используя тест -regex
, будет что-то вроде:
find. -maxdepth 1 -type d -regex '.*/machine.*'