QEMU/KVM - гостевая виртуальная машина Ubuntu зависает при перемещении мыши

Есть много способов сделать это. Вот одна команда, которая должна работать для вашего примера:

for oldname in *; do
    newname="$(echo "${oldname}" | grep -Po 'ID\w?\d+' | tr A-Z a-z).txt" \
    && mv -i "${oldname}" "${newname}";
done

В этом примере использовались Perl -совместимые регулярные -выражения, которые, похоже, ваш grepне поддерживает. Вот альтернатива с использованием основных регулярных выражений:

for oldname in *; do
    newname="$(echo "${oldname}" | grep -o 'ID[A-Z]\?[0-9]\+' | tr A-Z a-z).txt" \
    && mv -i "${oldname}" "${newname}";
done

Далее следует более подробное объяснение.


Выражение for oldname in *использует подстановочный -шаблон/шаблон для перебора файлов в текущем каталоге и сохраняет каждое имя в переменной oldname. Чтобы проверить это, вы можете запустить следующее:

for oldname in *; do echo "${oldname}"; done

Затем мы используем grepдля извлечения части имени файла -, которую вы хотите сохранить. Флаг опции -Pуказывает grepиспользовать Perl -совместимые регулярные выражения (, которые на самом деле не нужны в этой ситуации ), а флаг -oуказывает grepизвлекать только совпадающую подстроку (вместо того, чтобы печатать всю строку ). Шаблон \w?соответствует одиночному символу опции (, символу «слово» ), а шаблон \d+соответствует одной или нескольким цифрам. Мы можем протестировать регулярное выражение следующим образом:

for oldname in *; do echo "${oldname}" | grep -Po 'ID\w?\d+'; done

Затем мы используем trдля преобразования символов верхнего регистра в нижний:

for oldname in *; do echo "${oldname}" | grep -Po 'ID\w?\d+' | tr A-Z a-z; done

Следующим шагом является использование подстановки команд для присвоения этой строки переменной и последующего вывода результата:

for oldname in *; do
    newname="$(echo "${oldname}" | grep -Po 'ID\w?\d+' | tr A-Z a-z)" && echo "${newname}"
done

Затем добавляем в файл ".txt" -расширение:

for oldname in *; do
    newname="$(echo "${oldname}" | grep -Po 'ID\w?\d+' | tr A-Z a-z).txt" && echo "${newname}"
done

Мы можем запустить эту команду для проверки работоспособности -, чтобы убедиться, что мы получаем ожидаемые результаты. Как только мы будем удовлетворены, мы заменим команду echoна команду mv:

for oldname in *; do
    newname="$(echo "${oldname}" | grep -Po 'ID\w?\d+' | tr A-Z a-z).txt" \
    && mv -i "${oldname}" "${newname}";
done

1
28.07.2019, 19:03
1 ответ

Убедитесь, что у гостя установлены spice -vdagent и qemu -guest -агент . Затем попробуйте использовать сервер Spice в качестве средства просмотра по умолчанию (теперь вы сможете переключиться на видеодрайвер VirtIO ).

1
28.04.2021, 23:31

Теги

Похожие вопросы