0 Prefacio
A veces, cuando escribimos scripts de shell por lotes , es posible que necesitemos obtener la fecha N días / mes / año antes (después) de la fecha especificada, donde N puede ser 1 día / mes / año, 2 días / mes / año, 3 días / Mes / año y así sucesivamente. El método es realmente muy simple, aquí hay un registro simple. Basándonos en esta gramática, también podemos escribir un ciclo para procesar todos los datos dentro de los N días posteriores a la fecha especificada.
1. Obtenga N días antes (después) de la fecha
El primero es obtener la fecha actual:
DATE=$(date +%Y%m%d)
A este comando se le DATE
asignará 20,190,904, %Y%m%d
es el formato de esta fecha, así como el correspondiente %Y%m
(año, mes, como 201,909), más de una búsqueda puede buscar su propia redacción.
Obtenga la fecha N días después de esta fecha ( ${DATE}
se puede reemplazar por cualquier fecha de cambio, como 20190101):
DATE_TMP=$(date -d "${DATE} N days" "+%Y%m%d")
Obtenga la fecha anterior y posterior a esta fecha N ( ${DATE}
se puede reemplazar por cualquier fecha de cambio, como 20190101):
DATE_TMP=$(date -d "${DATE} N days ago" "+%Y%m%d")
por ejemplo:
Obtenga la fecha 1 día después de la fecha actual:
DATE_TMP=$(date -d "${DATE} 1 days" "+%Y%m%d")
Obtenga la fecha 1 día antes de la fecha actual:
DATE_TMP=$(date -d "${DATE} 1 days ago" "+%Y%m%d")
aprender por analogía:
Obtenga la fecha N meses después de esta fecha:
DATE_TMP=$(date -d "${DATE} N month" "+%Y%m%d")
Obtenga la fecha N meses antes de esta fecha:
DATE_TMP=$(date -d "${DATE} N month ago" "+%Y%m%d")
Obtenga la fecha N años después de esta fecha:
DATE_TMP=$(date -d "${DATE} N year" "+%Y%m%d")
Obtenga la fecha N años antes de esta fecha:
DATE_TMP=$(date -d "${DATE} N year ago" "+%Y%m%d")
2. Circule los datos en N días
Una forma sencilla de escribir un script de Shell que procesa datos dentro de los N días posteriores a una fecha específica:
DATE=$(date +%Y%m%d)
for i in {1..5}
do
DATE_TMP=$(date -d "${DATE} ${i} days ago" "+%Y%m%d")
cd /root/backup
rm -rf *${DATE_TMP}*
done
Según este script, combinado con el comando crontab de Linux (uso: Linux usa crontab para implementar el formato de la tarea de sincronización y la introducción de uso ), puede eliminar datos dentro de los 5 días posteriores a la fecha actual, por ejemplo, cada 7 días.
Nota: este artículo se transfiere desde https://laowangblog.com/shell-get-specific-date.html