|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre actif
![]() Inscription : août 2005 Messages : 562 ![]() |
Bonjour,
Existe-t-il un moyen simple de supprimer tous les fichiers textes d'un répertoire, en gardant le plus récent ? Merci à tous... |
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 546 ![]() |
oui
en deux lignes de commandes de structure for: Code :
|
||
|
|
00
|
|
|
#3 |
![]() ![]() Inscription : août 2005 Messages : 8 310 ![]() |
Tu peux tenter d'utiliser l'option -mtime de la commande find mais c'est assez mer...ique car il faut connaître depuis combien de temps les fichiers ont été modifiés.
EDIT : j'ai trouvé en une commande find (testé sous Solaris) : Code :
find . -type f ! -name "`ls -tr | tail -1`" -exec rm {} \; Code :
find . \( ! -name . -prune \) -type f ! -name "`ls -tr | tail -1`" -exec rm {} \;
__________________
![]() Du détail, du détail, du détail !!! Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
|
|
|
00
|
|
|
#4 |
|
Membre actif
![]() Inscription : août 2005 Messages : 562 ![]() |
Merci Mac,
Par contre, dans le 2e exemple, que signifient: "-prune" Le "!" juste après "-type f" et le "-exec" ? Merci bcp... |
|
|
00
|
|
|
#5 |
![]() ![]() Inscription : août 2005 Messages : 8 310 ![]() |
man find
-prune c'est pour ne pas tenir compte de ce qui précente. En l'occurence, ce qui précède se trouve dans la parenthèse et signifie "tout ce qui ne s'appelle pas .". Le ! vient en négation de -name, donc "! -name ..." signifie "tout ce qui ne s'appelle pas comme indiqué" (c'est idem que dans la parenthèse pour le -prune). Le `ls -tr | tail -1` renvoie le dernier fichier modifié du répertoire, donc au final, la séquence ! -name "`ls -tr | tail -1`" signifie "tout ce qui ne s'appelle pas comme le dernier fichier modifié du répertoire". Enfin, le -exec c'est la commande à exécuter pour chaque fichier (-type f) trouvé par la commande find en tenant compte de toutes les règles précédentes. {} remplace le nom du fichier trouvé.
__________________
![]() Du détail, du détail, du détail !!! Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
|
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : novembre 2007 Messages : 130 ![]() |
-prune ca permet de faire une recherche recursives avec les sous repertoires
-type f : On cherche des fichiers -name "*.txt" : uniquement les fichiers dont le nom correspond au forma *.txt le signe d'exclamation signifie "not" ; exemple pour eviter les fichiers "*.so" il faut ajouter ! -name "*.so" |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com