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
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