Como salvar nomes de arquivos com um nome diferente?

Como salvar nomes de arquivos com um nome diferente?

Quero que meu script leia uma lista de novos nomes e salve um novo arquivo com um novo nome, que será as três primeiras letras do nome do arquivo, mais um contador adicionando um para cada arquivo começando com as mesmas três letras.

Suponha que estes sejam meus nomes de arquivos antigos e novos-

lista de nomes de arquivos: A77 A77 A77 A78 A78

listofNewNames: A7701 A7702 A7703 A7801 A7802 (potencial, listofNewNames não deve ser salvo)

COUNTER=0
for i in listofFileNames; do
while [$COUNTER -lt 5]
let "COUNTER=COUNTER+01"
done
newName=${oldfilename}${COUNTER}.L2_LAC_OC
done

Até agora é o que tenho, mas sempre que as letras mudam o contador tem que reiniciar em 0 para que o comprimento dos nomes dos arquivos nunca seja 5. É, por exemplo, 3 e depois 2, dependendo da quantidade de arquivos.

Espero ter sido claro. Desde já, obrigado.

Responder1

last_name=""
listofFileNames=(A77 A77 A77 A78 A78)

for name in "${listofFileNames[@]}"; do
        test "$name" != "$last_name" && COUNTER=1
        last_name="$name"
        printf "%s%02d\n" "${name}" "${COUNTER}"
        ((COUNTER++))
done

Responder2

Veja isso:

ListOfFiles=("A77" "A77" "A77" "A78" "A78")
for oldfile in "${ListOfFiles[@]}"; do 
    COUNT=1; 
    while [[ -f "$(printf "%s%02d" ${oldfile} ${COUNT})" ]]; do 
        COUNT=$(($COUNT + 1)) 
    done 
    echo "NewName: $(printf "%s%02d" ${oldfile} ${COUNT})"
    touch "$(printf "%s%02d" ${oldfile} ${COUNT})"
done

no momento, o script fornecerá nomes de arquivos como

NewName: A7701
NewName: A7702
NewName: A7703
NewName: A7801
NewName: A7802

informação relacionada