Precisa de ajuda com um script bash

0

Estou tendo problemas para descobrir como fazer este script bash desde que sou muito novo para bater. Eu quero pegar todos os arquivos que eu tenho em um diretório, mudar seus nomes (acho que a parte de nomes de mudança pode ser feita com mv) e movê-los para outro diretório (novamente com mv). O problema é que os arquivos não possuem uma extensão. Eles são simplesmente nomeados de acordo com números assim: 1, 2, 3 etc. Apenas o número. Como faço para pegar cada arquivo sem extensão, mudar seu nome e movê-lo?

Obrigado.

    
por Sebs 09.11.2016 / 17:57

2 respostas

2

Você pode usar extended globbing para procurar arquivos com apenas dígitos em seus nomes:

shopt -s extglob
for file in +([0-9]) ; do
    newname=newpath/...    # Build the new name.
    mv "$file" "$newname"
done
    
por choroba 09.11.2016 / 18:09
0

Pessoalmente, eu usaria o comando basename para pegar o nome do arquivo e testá-lo com o grep se ele tivesse um caractere de ponto, o que significaria que ele tem extensão. Isso pode ser usado dentro da instrução if, e se ele usar a instrução continue para ir para o próximo arquivo. Quanto à mudança, isso pode ir depois da declaração. Dessa forma, o comando mv é inacessível, a menos que não tenha extensão

    
por Sergiy Kolodyazhnyy 09.11.2016 / 18:05