web-dev-qa-db-fra.com

Suppression de dossiers de plus de 5 jours

J'ai un dossier de sauvegarde qui utilise un calendrier comme la structure de dossier pour organiser les fichiers. Je souhaite les supprimer tous les 5 jours, mais la sauvegarde complète est supprimée car le dossier principal a plus de 5 jours.

Structure du dossier:

Backup
    -> 2017
          -> October
                 -> 28
                 -> 29
                 -> 30
                 -> 31
          -> November
                 -> 1
                 -> 2
                 -> 3

J'ai essayé d'exécuter cette commande:

find /mnt/backup/* -type d -mtime +5 -execdir rm -rf {} \;

Mais il supprimera le répertoire 2017 car il date de plus de 5 jours, ce qui signifie qu'il supprimera tous les sous-dossiers. Je veux seulement supprimer les répertoires de 5 jours à l'intérieur. Par exemple, si nous étions le 3 novembre, je souhaite uniquement que les répertoires 28 et 29 soient supprimés. Puis, à compter du 5 novembre, je souhaite supprimer l’annuaire complet pour octobre, car tout ce qui y figure aura maintenant plus de 5 jours. Aucune suggestion?

Merci

2
Stuart

Utilisez -mindepth 1 si vous ne voulez pas que 2017 soit touché:

$ mkdir -p foo/2017/{October/{28..31},November/{1..3}}
$ touch -d 'now - 6 days' foo/2017/October/{28,29} foo/2017
$ find foo/* -mindepth 1 -mtime +5
foo/2017/October/28
foo/2017/October/29
$ find foo/* -mtime +5
foo/2017
foo/2017/October/28
foo/2017/October/29

Si vous partez de foo au lieu de foo/2017, utilisez -mindepth 2:

$ find foo/ -mindepth 2 -mtime +5
foo/2017/October/28
foo/2017/October/29
3
muru