Script de Shell que transfiere el archivo que toma la fecha desde hasta (1 de noviembre) hasta (1 de diciembre) desde el nombre

Script de Shell que transfiere el archivo que toma la fecha desde hasta (1 de noviembre) hasta (1 de diciembre) desde el nombre

Bien, este script de shell puede parecer complicado, pero no sé cómo lograrlo.

entonces aquí está el requisito.

ingrese la descripción de la imagen aquí

tenga en cuenta los archivos anteriores amablemente.

El nombre del archivo es el siguiente.

Meter_20200120100846.xls
Meter_20200121100846.xls
Meter_20200122100846.xls
Meter_20200123100846.xls
Meter_20200124100846.xls
Meter_20200125100846.xls

Entonces quiero crear un script que copie estos archivos a otro servidor. pero aquí está el giro: el número al final es la fecha de ese archivo. entonces 20200120 en el archivo 1 significa que se creó el 20/01/2020.

Básicamente, quiero crear un script que tome la entrada como 20/01/2020 o 20200120.a25/01/2020 o 20200125 y copie todos los archivos a otro servidor con el mismo nombre.

Puedo usar cualquier cosa para copiar scp, sftp o rsync en el comando.

Básicamente, se crea un script que toma desde la fecha hasta la fecha de finalización y copia todos los archivos a otro servidor.

Para ser honesto, no sé si es posible hacer eso.

pero muchachos, si pueden conocer esa solución, realmente me ayudaría.

Gracias y saludos, Sagar Mandal

Respuesta1

Si te entiendo correctamente:

# 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

Producción:

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

Respuesta2

El comando de fecha es lo que estás buscando.

$ date -d 1/25/2020 +%Y%m%d
20200125

-d mm/dd/yyyy - dar la fecha de entrada al comando.

+%Y%m%d - cuál quieres que sea tu resultado.

  • %Y - año en cuatro dígitos
  • %m - mes en dos dígitos
  • %d - fecha del mes en dos dígitos.

información relacionada