GNU/Linux >> Tutoriels Linux >  >> Linux

Suppression de fichiers de plus de 30 jours en fonction du nom de fichier comme date

Voici une solution 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

Je l'ai terminé par "echo rm $file " au lieu de vraiment supprimer vos fichiers, cela testera le résultat avant.


Avec zsh :

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

Supprimer le echo -E lorsqu'il est heureux.

Sur un système GNU et avec le shell GNU (bash ), vous pourriez faire quelque chose d'approchant avec :

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. Pourquoi Find -mtime +1 ne renvoie-t-il que les fichiers de plus de 2 jours ?

  2. Fichiers Cat dans un ordre spécifique basé sur le numéro dans le nom de fichier ?

  3. Comment configurer un cron pour effectuer quotidiennement la sauvegarde de la base de données MySQL et supprimer les anciens fichiers de sauvegarde datant de plus de 10 jours ?

  4. rechercher et supprimer un fichier ou un dossier de plus de x jours

  5. Comment supprimez-vous les fichiers antérieurs à une date spécifique sous Linux ?

Comment supprimer des fichiers plus anciens que les jours spécifiés sous Linux

Comment créer un fichier tar pour des fichiers de plus de 7 jours à l'aide de scripts shell Linux

Comment vérifier si un fichier existe dans un répertoire spécifique dans un script bash ?

Script bash pour supprimer les fichiers de plus de x jours avec des sous-répertoires

Recherche et suppression de fichiers avec une date spécifique

Recherche de fichiers de plus de x jours sur un système avec une busybox dépouillée