J'ai des annuaires avec nom comme
2012-12-12
2012-10-12
2012-08-08
Comment supprimer les anciennes entrées datant de plus de 10 jours avec un script shell bash
J'ai des annuaires avec nom comme
2012-12-12
2012-10-12
2012-08-08
Comment supprimer les anciennes entrées datant de plus de 10 jours avec un script shell bash
Cela fera de manière récursive pour vous:
find /path/to/base/dir -type d -ctime +10 -exec rm -rf {} \;
Explication:
find
: la commande unix pour trouver les fichiers / répertoires / liens etc./path/to/base/dir
: le répertoire de commencer votre recherche.-type d
: seulement de rechercher les répertoires-ctime +10
: considérer seulement ceux avec des temps de modification de plus de 10 jours-exec ... \;
: pour chaque résultat trouvé, faire la commande suivante en ...
rm -rf {}
: de manière récursive, à force de supprimer le répertoire {}
de la partie est où le trouver à la suite est substitué dans la partie précédente.Sinon, vous pouvez utiliser:
find /path/to/base/dir -type d -ctime +10 | xargs rm -rf
Ce qui est un peu plus efficace, car elle s'élève à:
rm -rf dir1 dir2 dir3 ...
par opposition à:
rm -rf dir1; rm -rf dir2; rm -rf dir3; ...
comme dans l' -exec
méthode.
Note: voir Aussi @MarkReed de commentaire ci-dessous concernant l'usage privilégié avec la version moderne de l' find
.
Si vous souhaitez supprimer tous les sous-répertoires dans /chemin/vers/de base, exemple /chemin/vers/base/dir1, /chemin/vers/base/dir2 et /chemin/vers/base/dir3 mais vous ne voulez pas supprimer le /chemin/vers/de base. Vous devez ajouter -mindepth 1 et -maxdepth 1 qui ne contient que la liste des sous-répertoires dans /chemin/vers/de base. -mindepth 1 exclut en fait les /chemin/vers/la base de la liste qui empêche le /chemin/vers/la base de se supprimer. -maxdepth 1 sera SEULEMENT la liste des sous-répertoires dans /chemin/vers/de base tels que le /chemin/vers/base/dir1, /chemin/vers/base/dir2 et /chemin/vers/base/dir3 mais il ne fera pas la liste des sous-répertoires de manière récursive. Si ces sous-répertoires ne sont pas répertoriées, /chemin/vers/base/dir1/dir1, /chemin/vers/base/dir2/dir1 ou /chemin/vers/base/dir3/dir1 et ainsi de suite.
Supprimer tous les sous-répertoires dans /path/to/à la base de plus de 10 jours.
find /path/to/base -mindepth 1 -maxdepth 1 -type d -ctime +10 | xargs rm -rf
J'ai eu du mal à obtenir ce droit en utilisant les scripts fournis ci-dessus et quelques autres scripts en particulier lorsque les fichiers et les noms de dossier a saut de ligne ou des espaces.
Finalement tombé sur tmpreaper et il a été assez bien travaillé pour nous à ce jour.
tmpreaper -t 5d ~/Downloads
tmpreaper --protect '*.c' -t 5h ~/my_prg
Source Original link
Il a des fonctionnalités comme test qui vérifie les répertoires de manière récursive et les répertorie. Possibilité de supprimer les liens symboliques, des fichiers ou des répertoires et aussi le mode de protection pour un certain modèle lors de la suppression de
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.