У меня уже была эта проблема пару раз. В простых случаях было достаточно получить доступ к загрузчику grub boot -, нажав ESC , а затем выбрав образ Ubuntu.
На этот раз мне пришлось еще немного повозиться.Мои шаги по исправлению были:
root
в терминале fsck /dev/sda1
(, в то время как sda1
является моим загрузочным креплением)fsck
исправит проблему (она найдет ее для меня)Я знаю, что уже немного поздно, но, возможно, это поможет кому-то еще
Очень простой способ сделать это, так как папки уже созданы.
ls -1d */|cut -f1 -d/ |awk -F"." '{print "mv " $0 " " $3"."$2"."$1"/"}' | bash
В вашем вопросе нужно немного больше информации, поэтому я предполагаю:
rename
версия их поддерживает rename 's/^([0-9]{2})\.([0-9]{2})\.([0-9]{2})\//$3.$2.$1/' */
Если у вас нет rename
или он есть и он не поддерживает регулярное выражение, это более переносимый подход (, хотя и менее элегантный):
find. -mindepth 1 -maxdepth 1 -type d \
| sed 's ^./ ' \
| grep -E "^([0-9]{2}\.){2}[0-9]{2}$" \
| while IFS=. read dd mm yy ; do mv $dd.$mm.$yy $yy.$mm.$dd ; done
Я рекомендую не использовать регулярные выражения, а прибегать к инструментам дат, когда дело доходит до обработки дат, например.
for dir in */; do echo mv $dir $(LC_ALL=C busybox date -uD '%d.%m.%Y' -d "$dir" "+%Y.%m.%d") ; done
(вдохновлено Принудительное отображение даты в формате День/Месяц/Год .)
Я включил echo
для режима «предварительного просмотра».
Решение bash
по переименованию каталогов в вашем текущем каталоге:
for f in [0-3][0-9].[01][0-9].[0-9][0-9]; do
[ -d "$f" ] && mv -v "$f" "${f:6}.${f:3:2}.${f:0:2}"
done
Это длиннее одного -лайнера, но это не делает никаких предположений о дате:
$ mkdir 12.12.12 01.02.99
$ perl -MTime::Piece -Mautodie -E '
opendir my $dh, ".";
while (my $f = readdir $dh) {
if (-d $f and $f =~ /^\d\d.\d\d.\d\d$/) {
my $t = Time::Piece->strptime($f, "%d.%m.%y");
rename $f, $t->ymd;
}
}
'
$ ls
1999-02-01/ 2012-12-12/
Я знаю, что это некрасиво (и в некоторых ситуациях не работает... )но...
reg='^(..)\.(..)\.(..)/'
for a in */ ; do
[[ $a =~ $reg ]] && mv $a ${BASH_REMATCH[3]}.${BASH_REMATCH[2]}.${BASH_REMATCH[1]}
done