Aparar Nomes de Arquivos de Tarballs Usando o Bash

1

Preciso classificar alguns códigos-fonte de vários alunos. O processo de submissão é através da Blackboard, que acrescenta ao nome do arquivo um monte de coisas desnecessárias. Aqui está um exemplo:

Test Submission_adunn_attempt_2014-04-04-10-48-37_adunn-helloworld.tar.gz

Gostaria de renomear este arquivo (e todos os outros) para:

adunn-helloworld.tar.gz

Como posso fazer isso em um script Bash?

    
por Daeden 05.04.2014 / 02:24

1 resposta

3

Você poderia usar a expansão de parâmetros do shell:

$ s="Test Submission_adunn_attempt_2014-04-04-10-48-37_adunn-helloworld.tar.gz"
$ echo "${s##*_}"
adunn-helloworld.tar.gz

Use um loop para renomear os arquivos:

for f in *.gz; do
  mv "$f" "${f##*_}"
done

Como alternativa, você pode usar prename (uma parte da distribuição do perl):

rename 's/.*_//' *.gz
    
por 05.04.2014 / 07:21