Finalmente encontré una manera de resolverlo. Usé la utilidad de copia de seguridad gratuita llamada testdisk. Está disponible tanto para windows como para linux. Lo usé para hacer una copia de seguridad de mis datos del disco duro. Luego usé el administrador de particiones para eliminar la partición completa. Y por fin creó la nueva partición. Ahora funciona bien.
В зш:
set -- dir_0.0.1_*(oe['REPLY=${REPLY##*_}']n[-1])
mv dir_0.0.1 dir_0.0.1_$(( ${1##*_} + 1 ))
Это устанавливает позиционные параметры (, используя только $1
здесь )для расширения подстановочного знакаdir_0.0.1_*(oe['REPLY=${REPLY##*_}']n[-1])
:
dir_0.0.1_
o
упорядочиваются (сортируются )с последующим e[... ]
выражением, которое _
подчеркивания n
по цифрам [-1]
)Имя файла с наибольшим текущим индексом теперь находится в $1
. Это число снова извлекается внутри числового расширения $(( ))
(путем удаления начальных символов до _
), затем добавляется один и добавляется статический префикс.
В bash я просматривал имена файлов и вручную сравнивал индексы:
# safe starting point
greatest=-1
for d in dir_0.0.1_*; do n=${d##*_}; [ "$n" -gt "$greatest" ] && greatest=$n; done
mv dir_0.0.1 dir_0.0.1_$(( greatest + 1))
Разбивка цикла bash (sh -совместима, на самом деле):
for
с подстановочным знаком для выбора существующих имен каталогов; для каждого из этих каталогов:Другим вариантом является перебор -принудительного цикла по индексам до тех пор, пока не будет найден неиспользуемый:
# set this to something you know exists
index=1
while [ -e dir_0.0.1_"${index}" ]; do index=$((index + 1)); done
mv dir_0.0.1 dir_0.0.1_"${index}"
Это увеличивает $index
до тех пор, пока каталог с соответствующим -именем не не не существует. Затем мы используем этот неиспользуемый номер для переименования.