renomeia centenas de arquivos removendo os últimos caracteres

2

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
    
por Nilesh 10.09.2014 / 12:12

3 respostas

3

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.

    
por 10.09.2014 / 12:17
2

Você pode usar renomear (ou prename em alguns sistemas operacionais):

rename 's/.{7}(\.txt)/$1/' abc*
    
por 10.09.2014 / 12:32
-1

com o GNU tar :

touch abc_xyz12_4567.txt abcde_xyz12_4567.txt
tar --remove-files --xform='s/\(.*\).\{7\}\././' -c ./* | tar -x
ls

OUTPUT

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
    
por 10.09.2014 / 12:39