Как переименовать даты в нескольких именах файлов

Вы, безусловно, можете попробовать, однако вам придется добавить множество зависимостей вместе с glibc. Кроме того, любая причина, по которой вы остановились бы на CentOS 7.2, скорее всего, будет потеряна, поскольку вы будете использовать базовую ОС гораздо более новой версии с частями 7.2.

Запустите «yum update glibc» и посмотрите, что изменится.

Возможно, вы захотите просто запустить единственную поддерживаемую версию CentOS 7, которая существует — ту, в которой есть все обновления. В противном случае вы используете ОС, которую вы полностью поддерживаете, и если она сломается (и будет ), единственным человеком, который сможет это исправить, будете вы.

1
09.02.2021, 18:37
2 ответа

С помощью GNU Parallel:

ls | parallel mv {} '{= s/(.*)\d{8}/${1}20210131/ =}'

Проверено на:

this_123456789_file_19991231_some.thing

Вы можете включить GNU Parallel непосредственно в сценарий, если у вас нет разрешения на установку программного обеспечения в системе, на которой вы будете работать:

parallel --embed > newscript.sh
1
18.03.2021, 22:31

Стандартная оболочка 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.

0
18.03.2021, 22:31

Теги

Похожие вопросы