Renomeia vários arquivos no diretório UNIX [duplicado]

0

Eu tenho arquivos no diretório unix no formato abaixo usando sed ou alguns outros 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

Quero renomear esses arquivos no formato abaixo

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
    
por Shriraj 03.05.2013 / 14:42

2 respostas

2

for file in Owner.Env.File_10513_1200_ver*.expdp; do
    mv "$file" "${file/010513_1200/100613_2300}"
done
    
por 03.05.2013 / 14:49
0

Se não forem muitos (vários dez mil) arquivos, isso deve fazer o trabalho (verifique com ls Owner.Env.File_010513_1200_ver*.expdp se os arquivos foram deixados e repita o comando em caso afirmativo):

rename File_010513_1200_ File_100613_2300_ Owner.Env.File_010513_1200_ver*.expdp

Com o GNU, uma alternativa para um grande número de arquivos (e arquivos com nomes estranhos) é:

find . -regex ".*/Owner.Env.File_010513_1200_ver[1-9][0-9]*.expdp" -print0 | \
  xargs -0 rename File_010513_1200_ File_100613_2300_ 
    
por 03.05.2013 / 14:59

Tags