Гораздо более чистое решение, основанное на ответе, связанном с @don_crissti. ( Фильтр Rsync: копирование только одного шаблона )
rsync -av --remove-source-files --include='*[0-9][0-9][0-9]' --include='*/' --exclude '*' /tmp/oldstruct/ /tmp/newstruct/
И отрицание:
rsync -av --remove-source-files --exclude='*[0-9][0-9][0-9]' /tmp/oldstruct /tmp/newstruct/
Исходный ответ:
Это должно сработать. Он найдет любой файл в структуре, в которой вы cd
заканчиваются 3 цифрами, создаст папку назначения в / tmp / newstruct
и переместит файл.
cd /tmp/oldstruct
find ./ -type f -regextype posix-basic -regex '.*[0-9]\\{3\\}' |
while read i; do
dest=/tmp/newstruct/$(dirname $i)
mkdir -vp $dest
mv -v $i $dest
done
Я бы рекомендовал добавить к mkdir
и mv
echo
перед его запуском, просто чтобы убедиться, что он выполняет то, что вы ожидаете.
Чтобы убрать 3 цифры, просто поместите do ! -regex
взамен.
Вот более простой метод, основанный на rsync. Однако он вызывает rsync
для каждого найденного файла, поэтому определенно не очень эффективен.
find ./ -type f -regextype posix-basic -regex '.*[0-9]\{3\}' --exec rsync -av --remove-source-files --relative {} /tmp/newstruct
В UEFI загрузчик обычно идентифицируется по уникальному UUID системного раздела EFI и пути к файлу загрузчика, которые хранятся в переменных загрузки UEFI в системной NVRAM. В отличие от старой загрузки в стиле MBR -, просто указать диск для загрузки не обязательно достаточно.
Некоторые производители систем разработали прошивку UEFI со встроенным -предположением, что ОС будет Windows, и добавили «полезную» функцию, которая сбрасывает переменные загрузки UEFI на точные значения, используемые Windows.
Начните с загрузки системы в режиме восстановления в режиме UEFI . Затем запустите efibootmgr -v
как root. Это покажет вам текущее состояние переменных загрузки UEFI. Вы также можете использовать команду blkid
, чтобы получить список UUID файловой системы и разделов каждого диска, который есть в системе. UUID раздела (, указанный в выводе blkid
какPARTUUID=<value>
)системного раздела EFI, должен соответствовать UUID, указанному в переменных загрузки, перечисленных командой efibootmgr -v
. При необходимости вы можете использовать другие опции с efibootmgr
, чтобы исправить содержимое переменных загрузки. Подробности см. в man efibootmgr
.
(Обратите внимание, :прошивка UEFI использует UUID раздела , в то время как загрузчик GRUB может использовать UUID файловой системы . В blkid
первый указан как PARTUUID=
, а второй — как UUID=
. Не путайте два.)
Если вы обнаружите, что переменные загрузки UEFI не указывают на загрузчик Fedora и любые внесенные вами изменения не сохранятся после перезагрузки, то, скорее всего, у вас есть какая-то разновидность ошибки прошивки UEFI, о которой я упоминал ранее. Родерик В. Смит называет это загрузочным переворотом :. См. по этой ссылке список некоторых известных вариаций и обходных путей для них.
По сути, одним из возможных обходных путей является установка (копии )загрузчика либо на стандартный съемный -диск -, путь загрузки в системном разделе EFI (\EFI\boot\boot<arch>.efi
, где <arch>
обычно x64
или, возможно, ia32
на типичном оборудовании ПК.Другой способ — поместить загрузчик Linux UEFI по тому же пути, который обычно использует Windows(\EFI\Microsoft\Boot\bootmgfw.efi
).