Вам не нужны ^
или $
для простых имен в find.
Find использует шаблоны для имен. Шаблон будет:
*
?
и [ ]
(не ^ или $). Итак, для поиска файлов, начинающихся с m
и not, заканчивающихся g
:
find . -maxdepth 1 -name 'm*[!g]' -o -name 'm'
Имя 'm'
охватывает случай, когда файл содержит только один символ.
Однако, файл, который вы создали с помощью touch $'\nmarst'
(да, новая строка может быть записана так в bash) не начинается с m
, он начинается с новой строки $'\n'
. Нет способа чередования в простых шаблонах, но вы можете использовать опцию OR (-o
) в find:
find . -maxdepth 1 \( -name 'm*' -o -name $'\n'"m*" \) -a ! -name '*g'
Это станет сложным при более длинных требованиях.
Для действительно сложных строк существует опция -regex
в find.
Я смог решить эту проблему, но я действительно не понимаю, почему то, что я сделал, работает. В итоге я снова запустил grub-install
, не пропустив --efi-directory
и --boot-directory
(, поэтому команда оказаласьgrub-install --removable --verbose
). Затем я удалил запись nvram и перезагрузился один раз, и диск не был обнаружен, но после еще одной перезагрузки он появился в списке загрузки и стал загружаемым.
Я прошел тот же процесс на другом компьютере (удалил существующую запись nvram и перезагрузился ), и там также был обнаружен диск, которого раньше не было. Похоже, что может потребоваться очистить записи nvram, чтобы UEFI иногда сканировал больше, но я, честно говоря, не уверен.
Записи nvram включают, где находится корневой раздел для системных файлов grubs. Если вы загружаете устройство напрямую, то UEFI сообщает grub, что корень такой же, как и система EFI, где обычно это системные разделы Linux / загрузочный каталог. Самое простое решение здесь — установить grub в системный раздел efi.
grub -установить --efi -каталог =/boot/efi --загрузочный -каталог =/boot/efi --съемный /dev/sde