Удаление DATE из середины имен файлов в unix - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь удалить ДАТУ из следующих имен файлов в unix

DMART_D02_20191101_contracts_ifrs9.csv
DMART_D02_20191101_contrannual_ifrs9.csv

Ожидаемый результат

DMART_D02_contracts_ifrs9.csv
DMART_D02_contrannual_ifrs9.csv

Я пробовал ниже команда, но она не работает.

sed -e 's/KKDAR_D02_[0-9]*/KKDAR_D02/g' sourcefolder > destinationfolder

Может кто-нибудь, пожалуйста, помогите мне

1 Ответ

0 голосов
/ 12 апреля 2020

Поскольку вы манипулируете файловыми файлами, а не текстами в файлах, вы захотите сказать что-то вроде:

for f in sourcefolder/*.csv; do
    newname=$(sed 's/.*\///; s/_[0-9]\{8\}_/_/' <<< "$f")
    cp -p -- "$f" "destinationfolder/$newname"
done

Если вы хотите изменить имена файлов на месте, не копируя в новый каталог Пожалуйста, попробуйте вместо этого:

for f in sourcefolder/*.csv; do
    newname=$(sed 's/_[0-9]\{8\}_/_/' <<< "$f")
    mv -- "$f" "$newname"
done

Обратите внимание, я предполагаю, что вы работаете с bash. Если вы работаете над другой оболочкой, пожалуйста, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...