tente
ls | awk -F. '{printf "mv %s %s.%s\n",$0,substr($1,1,length($1)-7),$2 ;}' | ksh
você pode usar
ls | awk -F. '{printf "mv %s %s.%s\n",$0,substr($1,1,length($1)-7),$2 ;}'
para ter uma prévia.
Eu tenho centenas de arquivos e quero remover os últimos sete caracteres do nome do arquivo, mas manter sua extensão.
Nome antigo:
abc_xyz12_4567.txt
abcde_xyz12_4567.txt
Novo nome:
abc_xyz.txt
abcde_xyz.txt
Você pode usar renomear (ou prename
em alguns sistemas operacionais):
rename 's/.{7}(\.txt)/$1/' abc*
com o GNU tar
:
touch abc_xyz12_4567.txt abcde_xyz12_4567.txt
tar --remove-files --xform='s/\(.*\).\{7\}\././' -c ./* | tar -x
ls
abcde_xyz.txt abc_xyz.txt
Isso fará tudo com segurança - e, na verdade, você nem precisa da opção --remove-files
- você pode, em vez disso, untar
dos arquivos em um diretório diferente e verificar se a alteração do nome do arquivo funcionou. Talvez como:
tar --xform... | tar -C ../test -x