Вы, безусловно, можете попробовать, однако вам придется добавить множество зависимостей вместе с glibc. Кроме того, любая причина, по которой вы остановились бы на CentOS 7.2, скорее всего, будет потеряна, поскольку вы будете использовать базовую ОС гораздо более новой версии с частями 7.2.
Запустите «yum update glibc» и посмотрите, что изменится.
Возможно, вы захотите просто запустить единственную поддерживаемую версию CentOS 7, которая существует — ту, в которой есть все обновления. В противном случае вы используете ОС, которую вы полностью поддерживаете, и если она сломается (и будет ), единственным человеком, который сможет это исправить, будете вы.
С помощью GNU Parallel:
ls | parallel mv {} '{= s/(.*)\d{8}/${1}20210131/ =}'
Проверено на:
this_123456789_file_19991231_some.thing
Вы можете включить GNU Parallel непосредственно в сценарий, если у вас нет разрешения на установку программного обеспечения в системе, на которой вы будете работать:
parallel --embed > newscript.sh
Стандартная оболочка POSIX sh
позволяет нам писать такие шаблоны, как
./*[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].csv
и
./*[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_imp.csv
Они будут соответствовать интересующим вас файлам в текущем каталоге. (Очевидно, вы могли бы сделать их более конкретными, например ./*20[0-2][0-9][01][0-9][0-3][0-9].csv
, что по-прежнему позволяло бы сопоставлять недопустимые даты. )Затем имена, соответствующие этим шаблонам, можно было бы переименовать следующим образом:
for name in./*[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].csv
do
[ ! -e "$name" ] && continue
newname=${name%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].csv}20201231.csv
mv "$name" "$newname"
done
for name in./*[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_imp.csv
do
[ ! -e "$name" ] && continue
newname=${name%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_imp.csv}20201231_imp.csv
mv "$name" "$newname"
done
Замена ${variable%pattern}
удаляет строку, соответствующую pattern
, с конца значения $variable
.