Question
suppression de log
- fabrice winckel
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 16 ans 5 mois #172
par fabrice winckel
suppression de log a été créé par fabrice winckel
Bonjour,
je cherche à transcrire en powershell une commande unix du type
find . -type f -mtime +30 -exec rm {} \;
Autrement dit comment supprimer les fichiers vieux de 30 jours ou plus ?
Si vous avez une idée, surtout n'hésitez pas à me la communiquer
Merci
Fabrice
je cherche à transcrire en powershell une commande unix du type
find . -type f -mtime +30 -exec rm {} \;
Autrement dit comment supprimer les fichiers vieux de 30 jours ou plus ?
Si vous avez une idée, surtout n'hésitez pas à me la communiquer

Merci
Fabrice
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 16 ans 5 mois #174
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ou d'un conseil ?
Réponse de Arnaud Petitjean sur le sujet Re:suppression de log
Bonjour Riface et bienvenue sur le forum 
Surtout ne prend pas peur de la commande qui va suivre. Je viens de la faire rapidement et il y peut-être (suremment) plus simple mais elle fonctionne:
[code:1] gci -force -recurse | where {!($_.mode -like \"d*\") -and ((get-date).Subtract($_.lastwritetime).days -gt 30)} | remove-item[/code:1]
Petite explication:
gci -force -recurse : comme je ne spécifie pas de chemin, je parcours le répertoire courant.
-recurse : force le parcours de tous les sous dossiers
-force : permet de naviguer aussi dans les repertoires cachés
Ensuite on fait un test sur chaque objet récupéré pour déterminer si c'est un fichier ou un dossier. Et si c'est un fichier, on calcule le nombre de jours écoulés entre aujourd'hui et la date de dernier enregistrement. Si c'est superieur à 30 c'est gagné !
Enfin on passe le tout à la commande remove-item pour supprimer la sélection.
Remarque : Avant d'exécuter brutalement la commande, tu peux utiliser le paramètre -whatif de remove-item. Ainsi PowerShell n'effacera rien mais t'informera de ce qu'il aurait fait si tu n'avais pas spécifié ce paramètre.
[code:1] gci -force -recurse | where {!($_.mode -like \"d*\") -and ((get-date).Subtract($_.lastwritetime).days -gt 30)} | remove-item -whatif[/code:1]
Petit rectificatif, au lieu de :
[code:1]!($_.mode -like \"d*\")[/code:1]
Il est plus \"propre\" d'utiliser la syntaxe suivante:
[code:1]($_.PSIsContainer -eq $false)[/code:1]
En espérant t'avoir aidé...
Arnaud
Message édité par: Arnaud, à: 16/04/07 00:50<br><br>Message édité par: Arnaud, à: 16/04/07 00:52

Surtout ne prend pas peur de la commande qui va suivre. Je viens de la faire rapidement et il y peut-être (suremment) plus simple mais elle fonctionne:
[code:1] gci -force -recurse | where {!($_.mode -like \"d*\") -and ((get-date).Subtract($_.lastwritetime).days -gt 30)} | remove-item[/code:1]
Petite explication:
gci -force -recurse : comme je ne spécifie pas de chemin, je parcours le répertoire courant.
-recurse : force le parcours de tous les sous dossiers
-force : permet de naviguer aussi dans les repertoires cachés
Ensuite on fait un test sur chaque objet récupéré pour déterminer si c'est un fichier ou un dossier. Et si c'est un fichier, on calcule le nombre de jours écoulés entre aujourd'hui et la date de dernier enregistrement. Si c'est superieur à 30 c'est gagné !
Enfin on passe le tout à la commande remove-item pour supprimer la sélection.
Remarque : Avant d'exécuter brutalement la commande, tu peux utiliser le paramètre -whatif de remove-item. Ainsi PowerShell n'effacera rien mais t'informera de ce qu'il aurait fait si tu n'avais pas spécifié ce paramètre.
[code:1] gci -force -recurse | where {!($_.mode -like \"d*\") -and ((get-date).Subtract($_.lastwritetime).days -gt 30)} | remove-item -whatif[/code:1]
Petit rectificatif, au lieu de :
[code:1]!($_.mode -like \"d*\")[/code:1]
Il est plus \"propre\" d'utiliser la syntaxe suivante:
[code:1]($_.PSIsContainer -eq $false)[/code:1]
En espérant t'avoir aidé...
Arnaud
Message édité par: Arnaud, à: 16/04/07 00:50<br><br>Message édité par: Arnaud, à: 16/04/07 00:52
MVP PowerShell et créateur de ce magnifique forum

Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ou d'un conseil ?
Connexion ou Créer un compte pour participer à la conversation.
- fabrice winckel
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 16 ans 5 mois #176
par fabrice winckel
Réponse de fabrice winckel sur le sujet Re:suppression de log
Un grand merci de ton aide
Ce script montre toute la puissance de l'outil
Je sens qu'il va me plaire (je l'ai installé qu'hièr
)
A bientôt
Fabrice
Ce script montre toute la puissance de l'outil
Je sens qu'il va me plaire (je l'ai installé qu'hièr

A bientôt
Fabrice
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.044 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- suppression de log