Como posso alterar os tipos de arquivos de vários arquivos de uma só vez?

2

Eu gostaria de alterar o tipo de arquivo de vários arquivos de uma só vez. Os arquivos são como A.1, A.2, A.3 ... e eu quero que eles sejam A.01, A.02, A.03 ...

É um tipo estranho de arquivo, mas é assim que o meu programa gera resultados.

Eu uso o Ubuntu 14.04 para sua informação.

Obrigado antecipadamente,

    
por Arnold 06.09.2016 / 00:58

2 respostas

3

Embora existam formas mais simples neste caso em particular, a abordagem geral que eu faço é reimprimir o sufixo numérico com a largura de campo e preenchimento desejados - usando o printf do shell função

for f in A*; do 
  printf -v fnew '%s.%02d' "${f%.*}" "${f##*.}"
  echo mv -v -- "$f" "$fnew"
done

(remova o echo depois de verificar se está fazendo a coisa certa) ou com o rename / prename

baseado em perl
prename -vn -- 's/\.(\d+)$/sprintf ".%02d", /e' A*

(desta vez, remova o n para realmente renomear).

    
por steeldriver 06.09.2016 / 01:46
3

Estou assumindo:

  • você só deseja inserir 0 após o . em todos os nomes de arquivos
  • A representa o que quer que esteja antes de . e é sempre o mesmo e não possui caracteres especiais (por exemplo, há apenas um . )

Se isso for verdade, é muito fácil substituir A. por A.0 em todos os nomes de arquivos.

(No entanto, você definitivamente deve fazer o que a Steeldriver diz, já que não há dúvida de que é um método totalmente superior)

Verifique se você está no diretório onde estão os arquivos (abra um terminal e cd no diretório correto, ou navegue até ele no Nautilus e depois clique com o botão direito e selecione "abrir no terminal") fazendo ls - você deve ver os arquivos que deseja renomear. Você pode usar um for loop

for f in A*; do mv "$f" "${f/A./A.0}"; done

Ou ainda mais fácil, use rename

rename 's/A\./A.0/' A*
    
por Zanna 06.09.2016 / 01:07