Criar diretório com valores sequenciais

1. Criar diretório com valores sequenciais

Cesar Fernando Sturion
cesarsturion

(usa Ubuntu)

Enviado em 04/11/2016 - 13:26h

Olá Pessoal,

Estou usando realizando um trabalho de automação usando Jenkins e preciso criar a cada execução dos jobs um diretório com o numero da sequencia da versão. Assim, precisava de um shell que criasse um diretório dessa maneira:

Primeira execução: 4.0.0.00
Segunda execução:4.0.0.01

E assim por diante.

Alguém pode me ajudar com esse shell?


  


2. Re: Criar diretório com valores sequenciais

thinomar
thinomar

(usa Linux Mint)

Enviado em 04/11/2016 - 14:42h

Vê se isso ajuda. Lembrando que tem que alterar as variaveis CAMINHO e DIR_NAME pra se adequar ao que você quer. Recomendo testar em algum diretorio de testes apenas, antes de usar no diretorio de producao.




#!/bin/bash

# Caminho dos diretorios que as versoes estao dentro
CAMINHO=/caminho/do/diretorio/
# Prefixo das versoes
DIR_NAME=4.0.0.

# Pega a ultima subversao. Exemplo, se a ultima pasta foi 4.0.0.03, resulta em 03
last_version=$(ls -d $CAMINHO*/ | sort | awk -F\. 'END{gsub("/", "", $(NF)) ; print $(NF)}')

# Soma com 1 a ultima versao. Se for 03, resulta em 04
current_version=$(printf "%02.f\n" $(echo "$last_version+1" | bc -l))

# Cria o diretorio
mkdir $CAMINHO$DIR_NAME$current_version



3. Re: Criar diretório com valores sequenciais

Cesar Fernando Sturion
cesarsturion

(usa Ubuntu)

Enviado em 04/11/2016 - 16:55h

thinomar escreveu:

Vê se isso ajuda. Lembrando que tem que alterar as variaveis CAMINHO e DIR_NAME pra se adequar ao que você quer. Recomendo testar em algum diretorio de testes apenas, antes de usar no diretorio de producao.




#!/bin/bash

# Caminho dos diretorios que as versoes estao dentro
CAMINHO=/caminho/do/diretorio/
# Prefixo das versoes
DIR_NAME=4.0.0.

# Pega a ultima subversao. Exemplo, se a ultima pasta foi 4.0.0.03, resulta em 03
last_version=$(ls -d $CAMINHO*/ | sort | awk -F\. 'END{gsub("/", "", $(NF)) ; print $(NF)}')

# Soma com 1 a ultima versao. Se for 03, resulta em 04
current_version=$(printf "%02.f\n" $(echo "$last_version+1" | bc -l))

# Cria o diretorio
mkdir $CAMINHO$DIR_NAME$current_version


thinomar,

Era isso mesmo que eu queria. Somente preciso de mais uma ajuda, teria como realizar uma validação se existe o diretório inicial por exemplo 4.0.0.00? Pergunto isso porque ele gera um erro na primeira execução:

ls: cannot access /root/*/: No such file or directory
(standard_in) 1: syntax error


Sou meio novo no mundo shell script, e meu receio é que o jenkins pare de executar o job quando apresentar esse erro.

Teria como me ajudar com isso também?


4. Re: Criar diretório com valores sequenciais

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 04/11/2016 - 17:07h

cesarsturion escreveu:

Olá Pessoal,
Estou usando realizando um trabalho de automação usando Jenkins e preciso criar a cada execução dos jobs um diretório com o numero da sequencia da versão. Assim, precisava de um shell que criasse um diretório dessa maneira:

Primeira execução: 4.0.0.00
Segunda execução:4.0.0.01

E assim por diante.

Alguém pode me ajudar com esse shell?

============================
Boa tarde Cesar.
Segue minha contribuição, testada e funcionando . . . :)
#!/bin/bash
LAST_VRS=""
#Na linha abaixo, informe o diretorio das versões.
DIR="TESTES/"
if [ -z "$LAST_VRS" ];then
NEXT_VER="4.0.0.00"
else
NEXT_VER=$(awk -F"." '{if($4<9) print "4.0.0.0"$4+1;else print "4.0.0."$4+1}' <<< "$LAST_VRS")
fi
sed -i '2s/.*/LAST_VRS=\"'$NEXT_VER'\"/' $0
mkdir ${DIR}${NEXT_VER}
sleep 0.5 ; exit


Qquer duvida, é só perguntar . . .

Att.:
Marcelo Oliver



5. Re: Criar diretório com valores sequenciais

Cesar Fernando Sturion
cesarsturion

(usa Ubuntu)

Enviado em 05/11/2016 - 16:40h

msoliver escreveu:

cesarsturion escreveu:

Olá Pessoal,
Estou usando realizando um trabalho de automação usando Jenkins e preciso criar a cada execução dos jobs um diretório com o numero da sequencia da versão. Assim, precisava de um shell que criasse um diretório dessa maneira:

Primeira execução: 4.0.0.00
Segunda execução:4.0.0.01

E assim por diante.

Alguém pode me ajudar com esse shell?

============================
Boa tarde Cesar.
Segue minha contribuição, testada e funcionando . . . :)
#!/bin/bash
LAST_VRS=""
#Na linha abaixo, informe o diretorio das versões.
DIR="TESTES/"
if [ -z "$LAST_VRS" ];then
NEXT_VER="4.0.0.00"
else
NEXT_VER=$(awk -F"." '{if($4<9) print "4.0.0.0"$4+1;else print "4.0.0."$4+1}' <<< "$LAST_VRS")
fi
sed -i '2s/.*/LAST_VRS=\"'$NEXT_VER'\"/' $0
mkdir ${DIR}${NEXT_VER}
sleep 0.5 ; exit


Qquer duvida, é só perguntar . . .

Att.:
Marcelo Oliver


Marcelo,

Uma dúvida, como limparia a variavel LAST_VRS quando for criar uma nova versão, por exemplo 4.1.0.00 ?


6. Re: Criar diretório com valores sequenciais

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 05/11/2016 - 21:15h

cesarsturion escreveu:

msoliver escreveu:

cesarsturion escreveu:

Olá Pessoal,
Estou usando realizando um trabalho de automação usando Jenkins e preciso criar a cada execução dos jobs um diretório com o numero da sequencia da versão. Assim, precisava de um shell que criasse um diretório dessa maneira:

Primeira execução: 4.0.0.00
Segunda execução:4.0.0.01

E assim por diante.

Alguém pode me ajudar com esse shell?

============================
Boa tarde Cesar.
Segue minha contribuição, testada e funcionando . . . :)
#!/bin/bash
LAST_VRS=""
#Na linha abaixo, informe o diretório das versões.
DIR="TESTES/"
if [ -z "$LAST_VRS" ];then
NEXT_VER="4.0.0.00"
else
NEXT_VER=$(awk -F"." '{if($4<9) print "4.0.0.0"$4+1;else print "4.0.0."$4+1}' <<< "$LAST_VRS")
fi
sed -i '2s/.*/LAST_VRS=\"'$NEXT_VER'\"/' $0
mkdir ${DIR}${NEXT_VER}
sleep 0.5 ; exit


Qquer duvida, é só perguntar . . .

Att.:
Marcelo Oliver


Marcelo,

Uma dúvida, como limparia a variavel LAST_VRS quando for criar uma nova versão, por exemplo 4.1.0.00 ?

=====================================================
Boa noite Cesar.
Para ALTERAR a variável LAST_VRS,
Altere a LINHA 02 para: LAST_VRS="" e ALTERE a VERSãO na LINHA 08, NEXT_VER="4.1.0.00"

Dei uma "MELHORADA" no SCRIPT, segue:

#!/bin/bash
LAST_VRS=""
#Na linha abaixo, informe o diretorio das versões.
DIR="TESTES/"
if [ "$LAST_VRS" ];then
NEXT_VER=$(awk -F"." '{printf "%s.%s.%s.%02d\n",$1,$2,$3,$4+1 }' <<< "$LAST_VRS")
else
NEXT_VER="4.0.0.00"
fi
sed -i '2s/.*/LAST_VRS=\"'$NEXT_VER'\"/' $0
mkdir ${DIR}${NEXT_VER}
sleep 0.125 ; exit


OBS.: Se "GOSTOU"! da SOLUÇãO . . .
Marque a RESPOSTA como A MELHOR . . . :)


Abç.:
Marcelo OLiver




7. Re: Criar diretório com valores sequenciais

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 05/11/2016 - 22:27h

mkdir teste4.0.0.{00..10} 







______________________________________________________________________
OS: Kali Linux kali-rolling kali-rolling
Kernel: x86_64 Linux 4.6.0-kali1-amd64
Resolution: 2390x768
CPU: Intel Core i3-4005U CPU @ 1.7GHz
RAM: 3852MiB






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts