web-dev-qa-db-fra.com

Supprimer les fichiers de plus de 5 jours ainsi que dans tous les sous-dossiers

Je dois supprimer tous les fichiers de plus de 5 jours dans tous les sous-dossiers, mais pas les dossiers eux-mêmes. Je connais la commande:

find /path/to/files* -mtime +5 -exec rm {} \;

Mais comment puis-je dire à Ubuntu d’archiver tous les sous-dossiers, sans jamais supprimer les dossiers eux-mêmes. Aurai-je besoin d'un -maxdepth 5 quelque part?

Merci.

3
warhansen

Tout d'abord, ne donnez pas de glob à find (pas de files*), mais donnez-lui le répertoire parent (/path/to/). Il traitera de la récurrence et de la recherche de tous les fichiers. Ensuite, rm ne supprimera jamais les répertoires, vous n'avez donc pas à vous en préoccuper. Cependant, le moyen le plus simple est:

find /path/to/ -type f -mtime +5 -delete

Notez le -type f qui indique à find de ne regarder que les fichiers et le -delete qui, bien, les supprime. C'est plus efficace que d'appeler un rm séparé pour chaque résultat.

14
terdon