Tengo archivos en el directorio Unix en el siguiente formato usando sed o algunos otros comandos.
Owner.Env.File_010513_1200_ver1.expdp
Owner.Env.File_010513_1200_ver2.expdp
Owner.Env.File_010513_1200_ver3.expdp
Owner.Env.File_010513_1200_ver4.expdp
Quiero cambiar el nombre de estos archivos en el siguiente formato
Owner.Env.File_100613_2300_ver1.expdp
Owner.Env.File_100613_2300_ver2.expdp
Owner.Env.File_100613_2300_ver3.expdp
Owner.Env.File_100613_2300_ver4.expdp
Respuesta1
for file in Owner.Env.File_10513_1200_ver*.expdp; do
mv "$file" "${file/010513_1200/100613_2300}"
done
Respuesta2
Si no son demasiados (varios diez mil) archivos, entonces esto debería funcionar (verifique luego ls Owner.Env.File_010513_1200_ver*.expdp
si quedan archivos y repita el comando si es así):
rename File_010513_1200_ File_100613_2300_ Owner.Env.File_010513_1200_ver*.expdp
Con GNU, una alternativa para grandes cantidades de archivos (y archivos con nombres extraños) es:
find . -regex ".*/Owner.Env.File_010513_1200_ver[1-9][0-9]*.expdp" -print0 | \
xargs -0 rename File_010513_1200_ File_100613_2300_