Je souhaite supprimer tous les répertoires sauf les 4 plus récents dans mon répertoire parent. Comment feriez-vous cela dans Bash?Supprimer tout sauf les 4 nouveaux répertoires
Répondre
ls -atrd */ | head --lines=-4 | xargs rm -rf
Edit: ajouté « a » argument ls
cela laissera 4 derniers répertoires modifiés au lieu des 4 derniers créés, ne remarquera pas les répertoires commençant par un point, la tête cassera pour les noms contenant des lignes, xargs se cassera pour les noms contenant des espaces, et rm affichera un message d'erreur s'il n'y a rien à supprimer. –
Bons points. J'ai maintenant ajouté 'a' à ls pour capturer les répertoires avec un point, et grepped pour se débarrasser des répertoires actuels et parents, mais vous avez raison. C'est une réponse simple avec quelques limitations importantes comme vous l'avez souligné. –
Correction: aucun grep n'est nécessaire pour filtrer le répertoire courant et parent car ils ne sont pas affichés par ls * / –
S'il vous plaît préciser si vous voulez dire « supprimer tous les répertoires, mais les quatre les newst » ou « supprimer tout (fichiers et répertoires), sauf pour les quatre nouveaux répertoires ".
Veuillez également noter que les heures de création ne sont pas connues pour les répertoires. On ne peut dire quand un répertoire a été modifié pour la dernière fois, c'est-à-dire si des fichiers ont été ajoutés, supprimés ou renommés.
vous pouvez effectuer les opérations suivantes:
#!/bin/bash
#store the listing of current directory in var
mydir=`ls -t`
it=1
for file in $mydir
do
if [ $it -gt 5 ]
then
echo file $it will be deleted: $file
#rm -rf $file
fi
it=$((it+1))
done
(retirer le # avant rm pour y arriver vraiment;))
Une autre, BSD-sûr, façon de le faire, avec des tableaux (pourquoi non?)
#!/bin/bash
ARRAY=(`ls -td */`)
ELEMENTS=${#ARRAY[@]}
COUNTER=4
while [ $COUNTER -lt $ELEMENTS ]; do
echo ${ARRAY[${COUNTER}]}
let COUNTER=COUNTER+1
done
- 1. htaccess redirection pour tout sauf les fichiers/répertoires
- 2. comment supprimer tout [d +] sauf le dernier [d +]?
- 3. supprimer tout sauf le nom du fichier php
- 4. Regexp: comment supprimer tout sauf un autre regexp?
- 5. J'ai supprimé tout sauf les membres d'un site SharePoint
- 6. Comment puis-je supprimer tout sauf les fichiers listés avec la commande Find?
- 7. Apache: Bloquer tous les répertoires, sauf pour ceux énumérés
- 8. Supprimer tous les fichiers/répertoires à l'exception de deux répertoires spécifiques
- 9. Tout s'est bien passé, sauf les onglets. (HTML, CSS, JS)
- 10. SPARQL Query, sélectionnez tout sauf les choses qui correspondent?
- 11. Supprimer les signes de ponctuation sauf l'apostrophe Regex
- 12. Utiliser svn: ignore pour ignorer tout sauf certains fichiers
- 13. Impossible de déplacer tous les fichiers sauf les répertoires dans un dossier dans le terminal
- 14. Supprimer les fichiers du dossier de plus de 4 jours
- 15. Rails: en utilisant ZenTest/Autospec pour tester les spécifications dans les nouveaux répertoires
- 16. Utilisation d'Apache mod_rewrite pour supprimer les sous-répertoires d'URL
- 17. Regex pour faire correspondre "tout sauf" une chaîne
- 18. Requête SQL pour sélectionner tout sauf la valeur maximale
- 19. Flash: comportement incorrect dans tout sauf Internet Explorer
- 20. Comment supprimer efficacement tous les x enfants de l'entité parent sauf les derniers en utilisant NHibernate?
- 21. Comment puis-je supprimer toutes les lignes sauf une sur quatre dans un fichier texte?
- 22. Gestionnaire de clics JQuery pour tout sauf un objet donné
- 23. Tout sélectionner sauf le premier caractère d'une chaîne
- 24. Comment puis-je supprimer tous les caractères autres que les mots, sauf le saut de ligne?
- 25. Comment puis-je refuser tous les noms de répertoires sauf un avec .htaccess?
- 26. Comment utiliser htaccess pour rediriger tous les sous-répertoires sauf un
- 27. Enrichir les nouveaux enregistrements
- 28. Tout organisme dispose d'une liste de nouvelles fonctionnalités flex 4?
- 29. supprimer des éléments d'un HashSet tout Itération
- 30. Quelle est la meilleure façon de supprimer tous les répertoires .svn dans une hiérarchie de répertoires sous Mac OS X?
Vous ne pouvez pas récupérer l'heure de création de fichiers ou de répertoires car elle n'est pas stockée où que ce soit. Le plus proche que vous pouvez obtenir est le temps de changement d'inode: http://www.faqs.org/faqs/unix-faq/faq/part3/section-1.html et l'ajout ou la suppression de fichiers dans les répertoires modifie l'inode. –
... si l'ajout ou la suppression de fichiers d'un répertoire enfant ne modifie pas * un * inode parent. –