Поскольку вы манипулируете файловыми файлами, а не текстами в файлах, вы захотите сказать что-то вроде:
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
. Если вы работаете над другой оболочкой, пожалуйста, дайте мне знать.