trocar data de posição [RESOLVIDO]

1. trocar data de posição [RESOLVIDO]

thiago
lacerdat25

(usa Red Hat)

Enviado em 30/09/2020 - 16:54h

Olá amigos!

Preciso de uma ajuda para formatar um nome de um arquivo, sem danificar o conteúdo do mesmo.

ARQUIVO_200930_SP_RSSPS001-CDB.txt para ARQUIVO_300920_SP_RSSPS001-CDB.txt =, ou seja quero trocar somente a data de posição, onde está 200930 ano, mês, dia, tem que ficar 300920 dia mês ano.

Alguém pode me dar um help?

valeuu!!


  


2. Re: trocar data de posição [RESOLVIDO]

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 30/09/2020 - 18:31h

Teste:
rename -n 's/(\d{2})(\d{2})(\d{2})/$3$2$1/' ARQUIVO_200930_SP_RSSPS001-CDB.txt 


Pra valer, em vários arquivos:
rename -v 's/(\d{2})(\d{2})(\d{2})/$3$2$1/' *.txt 


Obs: Instale o rename, se não tiver!
sudo apt install rename 



3. Re: trocar data de posição [RESOLVIDO]

thiago
lacerdat25

(usa Red Hat)

Enviado em 30/09/2020 - 23:13h

Ryuk,

Obrigado pelo retorno!

Como eu faço ele via script com a data D-1?

Poderia me ajudar?


4. Re: trocar data de posição [RESOLVIDO]

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 01/10/2020 - 09:07h


lacerdat25 escreveu:

Ryuk,

Obrigado pelo retorno!

Como eu faço ele via script com a data D-1?

Poderia me ajudar?


O que é data D-1? O que realmente precisa? O "rename" não resolveu?



5. Re: trocar data de posição [RESOLVIDO]

thiago
lacerdat25

(usa Red Hat)

Enviado em 01/10/2020 - 13:52h

Estou fazendo assim: Filtrando o arquivo que tiver no dia, nesse caso p arquivo será D-1 ou D-2, devido finais de semana. Após eu devi pegar esse arquivo e inverter a data, ele vem: 200930, preciso trocar para ,30092020.

#!/bin/bash

dateArquivo=$(date +%F)
camPathOrig="/mnt/destino_867/"
valArq=$(ls --full-time "$camPathOrig" | grep ARQUIVO_*.*_SP_RSSPS001-CDB.* | awk '/^[-]/ && $6~/'$dateArquivo'/ {print $9}' | tail -1)

#prename -n 's/(\d{2})(\d{2})(\d{2})/$3$2$1/' $camPathOrig$valArq



6. Re: trocar data de posição

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 01/10/2020 - 16:06h

lacerdat25 escreveu:

Estou fazendo assim:
Filtrando o arquivo que tiver no dia, nesse caso p arquivo será D-1 ou D-2, devido finais de semana.
Após eu devi pegar esse arquivo e inverter a data, ele vem: 200930, preciso trocar para ,30092020.

#!/bin/bash

dateArquivo=$(date +%F)
camPathOrig="/mnt/destino_867/"
valArq=$(ls --full-time "$camPathOrig" | grep ARQUIVO_*.*_SP_RSSPS001-CDB.* | awk '/^[-]/ && $6~/'$dateArquivo'/ {print $9}' | tail -1)

#prename -n 's/(\d{2})(\d{2})(\d{2})/$3$2$1/' $camPathOrig$valArq


Lacerda, uma sugestão:
Ao invés de :
ls --full-time "$camPathOrig" | grep ARQUIVO_*.*_SP_RSSPS001-CDB.* | awk '/^[-]/ && $6~/'$dateArquivo'/ {print $9}' | tail -1
Utilize o find com regex...
Exemplo:
data="201001";
find /diretorio/ -regextype posix-extended -regex '.*/[A-Z_]+'$data'.*.txt'



______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________



  



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts