Cambiar el nombre de varios archivos en el directorio UNix

Cambiar el nombre de varios archivos en el directorio UNix

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*.expdpsi 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_ 

información relacionada