Shell obtiene la fecha N días / mes / antes (y después) de la fecha especificada

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 DATEasignará 20,190,904, %Y%m%des 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

Supongo que te gusta

Origin blog.csdn.net/godlovedaniel/article/details/109264746
Recomendado
Clasificación