GNU/Linux >> Tutoriales Linux >  >> Linux

Eliminación de archivos de más de 30 días según el nombre de archivo como fecha

Aquí hay una solución bash.

f30days=$(date +%s --date="-30 days")
for file in 20*.txt; do
    fdate=$(echo $file | tr _ -)
    fsec=$(date +%s --date=${fdate/.txt/})
    if [[ $fsec -lt $f30days ]]; then
        echo "rm $file"
    fi
done

Lo terminé con "echo rm $file " en lugar de eliminar realmente sus archivos, esto probará el resultado antes.


Con zsh :

zmodload zsh/datetime
strftime -s start '%Y_%m_%d.txt' $((EPOCHSECONDS - 30*86400))
echo -E rm -i 2*.txt(e:'[[ $REPLY > $start ]]':)

Elimina el echo -E cuando feliz.

En un sistema GNU y con el shell GNU (bash ), podrías hacer algo parecido a:

start=$(date -d '30 days ago' +%Y_%m_%d.txt)
list=()
shopt -s nullglob
for file in 2*.txt; do
  [[ $file > $start ]] && list+=("$file")
done
if (( ${#list[@]} > 0)); then
  echo -E rm -i "${list[@]}"
fi

Linux
  1. ¿Cómo eliminar todos los archivos anteriores a X número de días en Linux?

  2. ¿Por qué Find -mtime +1 solo devuelve archivos de más de 2 días?

  3. Cómo eliminar archivos de más de N días usando tmpreaper en Linux

  4. calcule el espacio total en disco utilizado por archivos de más de 180 días usando find

  5. Copiar archivos según la fecha de modificación en Linux

Cómo eliminar archivos anteriores a los días especificados en Linux

¿Cómo se eliminan archivos anteriores a la fecha específica en Linux?

Encuentra todos los archivos de más de un minuto

Eliminación elegante de archivos con más de 30 días de antigüedad

Buscar y eliminar archivos con una fecha específica

Búsqueda de archivos de más de x días en un sistema con un cuadro ocupado simplificado