У меня проблема с установкой новых обновлений на моем Ubuntu. Во время исследования я пришел к выводу, что / boot / заполнен на 100%, даже автоматическое удаление не работает (говорит, что запустите pt-fix install first), когда я запускаю apt-fix it errors.
Ваш скриншот показывает, что старые ядра накапливались, заполняющие / загрузки с изображениями ядра ( / Boot / VMlinuz *
) и начальных оперативных дисков ( /boot/initrd.img*
).
Обычно вы захотите сохранить новейшие два или три и избавиться от других.
Чистый и рекомендуемый способ - идентифицировать, к какой упаковке, к которой они принадлежат, а затем удалите этот пакет; например
[sh @ balrog] ~ 1 % ls -lh /boot
total 103M
...
-rw-r--r-- 1 root root 39M Jan 29 15:03 initrd.img-4.15.0-134-generic
-rw-r--r-- 1 root root 39M Jan 29 15:05 initrd.img-4.15.0-135-generic
...
-rw------- 1 root root 8,0M Jan 15 11:32 vmlinuz-4.15.0-134-generic
-rw------- 1 root root 8,1M Jan 18 18:24 vmlinuz-4.15.0-135-generic
[sh @ balrog] ~ 2 % dpkg -S /boot/vmlinuz-4.15.0-134-generic
linux-image-4.15.0-134-generic: /boot/vmlinuz-4.15.0-134-generic
И если вы решите, что это то, что вы хотите избавиться от, удалите его с
sudo dpkg -r linux-image-...
Обратите внимание, что /boot/initrd.img*
не принадлежит ни одной упаковке, потому что они генерируются на Fly В зависимости от того, какие модули ядра вам нужны в вашей текущей конфигурации, так что DPKG -S
на них всегда будет возвращаться «Нет, найденного сопоставленного шаблона»; Так что сосредоточиться на / boot / vmlinuz *
.
После этого обязательно определите загрузчик по этому поводу:
sudo update-grub
В противном случае stare меню будут оставаться в меню Grub (до следующего обновления не приносят новое ядро, которое также будет вызывать это).
HTH
Создайте USB установщика.
Загрузка с созданного USB-интерфейса установщика.
Загрузите установленную систему.
Удалите -n
, как только вы будете рады предложенным преобразованиям.
При переименовании
:
rename -n 's/.*(..)\.jpg$/$1.jpg/' *.jpg
Чтобы сделать его рекурсивным в подкаталоги, есть две опции:
используйте рекурсивную оболочку globb
shopt -s globstar
переименовать --nopath -n 's/. * (.. )\.jpg $/$ 1.jpg/' * */* .jpg
используйте найти
найти. -name '* .jpg' -execdir переименовать --nopath -n 's/. * (.. )\.jpg $/$ 1.jpg/' {} +
Обратите внимание на добавление опции --nopath
для предотвращения удаления ведущих элементов пути командой
rename . Альтернативой может быть изменение ведущего . *
регулярного выражения образца на [^/] *
. Следует также отметить, что версия globstar завершится ошибкой, если число совпадений слишком велико (или, точнее, если длина комбинированного аргумента превышает ARG _ MAX
).
С помощью mmv
:
mmv -n '*??.jpg' '#2#3.jpg'
этот метод сложно сделать рекурсивным, поскольку он выполняет собственное сопоставление образца. Его можно обернуть в find -type d -execdir...
Команда, я полагаю.
Удалите эхо
, как только вы будете рады предложенным преобразованиям.
С помощью простой оболочечной петли, предполагая, что мы можем удалить все до последнего пробела включительно:
for f in *.jpg; do echo mv -n -- "$f" "${f##* }"; done
Эту рекурсию можно выполнить с помощью find
в том же пути, что и для команды rename
:
find . -name '*.jpg' -execdir sh -c 'for f; do echo mv -n -- "$f" "${f##* }"; done' sh {} +
Обратите внимание, что если вы хотите использовать mv "$ f" "$ {f: -6} "
версия, предложенная в комментарии Раффы , должна использовать одну из оболочек, которая поддерживает индексацию отрицательных подстрок, например bash
/ ksh
/ zsh
для скриптлета sh -c
.
Вы можете использовать рекурсивный глобус с контуром оболочки, но для применения подстановки параметров, например,
for f in ./**/*.jpg; do d="${f%/*}"; b="${f##*/}"; echo mv "$f" "$d/${b: -6}"; done
-121--911033- Используйте dpkg вместо apt для удаления некоторых из этих пакетов.
Затем повторите попытку автоматического восстановления.