Ok, então esse script de shell pode parecer complicado, mas não sei como fazer isso.
então aqui está o requisito.
observe os arquivos acima gentilmente.
nome do arquivo são os seguintes.
Meter_20200120100846.xls
Meter_20200121100846.xls
Meter_20200122100846.xls
Meter_20200123100846.xls
Meter_20200124100846.xls
Meter_20200125100846.xls
Então, quero criar um script que copie esses arquivos para outro servidor. mas aqui está a diferença: o número no final é a data desse arquivo. então 20200120 no arquivo 1 significa que ele foi criado em 20/01/2020.
então basicamente eu quero criar um script que receba a entrada como 20/01/2020 ou 20200120para25/01/2020 ou 20200125 e copie todos os arquivos para outro servidor com o mesmo nome.
Posso usar qualquer coisa para copiar scp, sftp ou rsync no comando.
basicamente criando um script que leva de uma data a outra e copia todos os arquivos para outro servidor.
Para ser sincero, não sei se é possível fazer isso.
mas pessoal, se vocês souberem essa solução, isso realmente me ajudaria.
Obrigado e cumprimentos, Sagar Mandal
Responder1
Se bem entendi:
# Here you set the range of dates
from="20200121"
to="20200125"
for f in *.xls; do
[[ $(date -d "${f:6:8}" +%s) -ge $(date -d "$from" +%s) ]] &&
[[ $(date -d "${f:6:8}" +%s) -le $(date -d "$to" +%s) ]] &&
echo "$f in range" || # Here your actions
echo "$f not in range"
done
Saída:
Meter_20200120100846.xls not in range
Meter_20200121100846.xls in range
Meter_20200122100846.xls in range
Meter_20200123100846.xls in range
Meter_20200124100846.xls in range
Meter_20200125100846.xls in range
Responder2
comando date é o que você está procurando
$ date -d 1/25/2020 +%Y%m%d
20200125
-d mm/dd/yyyy
- forneça a data de entrada ao comando.
+%Y%m%d
- o que você deseja que seja sua saída.
%Y
- ano em quatro dígitos%m
- mês em dois dígitos%d
- data do mês em dois dígitos.