Если вы используете GNU Coreutils, у вас есть:
$ date --date=2014-11-13 +"%Y%m%d"
20141113
Однако:
$ date --date=2014-11-130ABCJUNK +"%Y%m%d"
date: invalid date ‘2014-11-130ABCJUNK’
Таким образом, задача намного проще :извлечь первые десять символов каждого YYYY-MM-DDetc
имени файла, чтобы получить дату отдельно, а затем перейти к date
для переформатирования.
Но если мы используем GNU Coreutils, мы можем пропустить команду date
, потому что touch
имеет точно такую же опцию --date=STRING
.
for file in * ; do
date=${file%${file##??????????}} # chop all but first ten
touch --date=$date -- "$file"
done
Но почему это десятисимвольное отсечение переносимым способом POSIX, когда мы полагаемся на touch
из GNU Coreutils?
for file in * ; do
date=${file:0:10}
touch --date=$date -- "$file"
done
Если вы знакомы с Scientific Linux, ближе всего будет CentOS. Fedora находится на несколько шагов впереди в версиях программного обеспечения, поэтому может возникнуть проблема с настройкой.
Вы можете попробовать dnf list --installed
получить список установленных пакетов. Вам нужно будет отредактировать точные версии и сохранить архитектуры, чтобы иметь возможность использовать список для установки эквивалентных пакетов позже.
Мне приходилось переустанавливать поврежденные установки Fedora. Я сохранил конфигурацию (по существу /etc
), установил поверх системы (, стараясь не форматировать /home
), установил сохраненный список пакетов, восстановил учетные записи и такую форму сохранил /etc
. По крайней мере, я так это помню, это было довольно давно. И это не связано с различными дистрибутивами.