-pas sûr que cela appartient ici ou sur serverfault-supprimer tous, mais 5 derniers répertoires avec script shell et trouver commande
Ce que je veux faire la liste de tous les répertoires dans un répertoire et supprimer tous, sauf pour le dernier 5. nous avons un système de déploiement en place qui progressivement faire lien quelque chose ceci:
/var/www/html/build1
/var/www/html/build2
/var/www/html/build3
/var/www/html/build4
/var/www/html/build5
/var/www/html/build6
/var/www/html/build7
/var/www/html/build8
/var/www/html/build9
/var/www/html/build10
cette utilise l'espace disque trop si bien nous voulons seulement garder les 5 derniers builds.
je suis venu avec les éléments suivants:
(trouver/var/www/html/-type d -name "build *" | sort -r) /var/www/html/build1564 /var/www/html/build1563 /var/www/html/build1560 /var/www/html/build1558 /var/www/html/build1557 /var/www/html/build1556 /var/www/html/build1555 /var/www/html/build1554 /var/www/html/build1553 /var/www/html/build1552 /var/www/html/build1551 /var/www/html/build1550 Maintenant, tout ce que j'ai besoin de faire est d'ajouter un "offset" à cette commande, de sorte que les cinq premiers répertoires n'apparaissent pas. Après cela, les répertoires restants doivent être supprimés.
S'il n'y a pas plus de 5 répertoires, rien ne devrait se produire.
Je suppose qu'il me manque encore deux étapes ici, l'étape de décalage et l'étape rm -rf?
merci pour le conseil, y at-il un moyen de le faire dans la commande donnée ci-dessus? – Jorre
Mon code (corrigé) est très proche de la réponse de mb14, la seule différence étant la boucle 'for' et l'option' -n' pour 'sort'. Je n'ai pas utilisé 'find' car vos répertoires' build' semblent être des sous-répertoires directs d'un parent commun. – Philipp
le code me donne un ordre incorrent des répertoires de construction à supprimer. il donne (avec le tri normal) build10001, build50, build60, ... cela devrait être build10001, build60, build50, ... – Jorre