Effacer folder

4 réponses
Avatar
Steve
Bonjour,

J'ai un question toute bête.

Je créeun repertoire tous les soirs par l'instruction
mkdir /home/xxx/$(date -I)
=> ce qui me créé un repertoire avec la date (2013-07-01 )

Maintenant, je souaite éffacer avec un script, le fichier plus vieux d'un
mois
=> rm -abcdef /home/xxx/$(date -I -30 ) ne fonctionne pas... :-)

qlq 'un a une idée ?

Merci

4 réponses

Avatar
Olivier Miakinen
Le 23/07/2013 13:59, Steve a écrit :

Maintenant, je souaite éffacer avec un script, le fichier plus vieux d'un
mois
=> rm -abcdef /home/xxx/$(date -I -30 ) ne fonctionne pas... :-)



rm -abcdef /home/xxx/$(date -I --date='1 month ago')
... mais tu risques de ne pas pouvoir effacer les fichiers des 29 au 31
janvier, 31 mars, 31 mai, etc.

rm -abcdef /home/xxx/$(date -I --date='30 days ago')
Avatar
Cyprien Nicolas
Salut,

Le 23/07/2013 13:59, Steve écrivit :
Bonjour,
Maintenant, je souaite éffacer avec un script, le fichier plus vieux d'un
mois
=> rm -abcdef /home/xxx/$(date -I -30 ) ne fonctionne pas... :-)

qlq 'un a une idée ?



Le shell sait faire des soustractions. Par exemple tu peux convertir la
date actuelle en secondes, soustraire le nombre de secondes
correspondant à 30 jours, et demander à date de convertir la date ainsi
calculée :

$ date -I -d @$(($(date +%s)-30*24*3600))
2013-06-23


Sinon, à supposer que tu touches pas au dossiers créés, find peut
chercher l'information avec -ctime (en jours) :

$ find /home/xxx/ -maxdepth 1 -ctime 30

(avec un -exec rm -r {} ; à la fin par exemple)

--
« Ceci n'est pas une signature. » — René Magritte (Apocryphe)
Avatar
Cyprien Nicolas
Salut,

Le 23/07/2013 13:59, Steve écrivit :
Bonjour, Maintenant, je souaite éffacer avec un script, le fichier
plus vieux d'un mois => rm -abcdef /home/xxx/$(date -I -30 ) ne
fonctionne pas... :-)

qlq 'un a une idée ?



Le shell sait faire des soustractions. Par exemple tu peux convertir la
date actuelle en secondes, soustraire le nombre de secondes
correspondant à 30 jours, et demander à date de convertir la date ainsi
calculée :

$ date -I -d @$(($(date +%s)-30*24*3600))
2013-06-23


Sinon, à supposer que tu touches pas au dossiers créés, find peut
chercher l'information avec -ctime (en jours) :

$ find /home/xxx/ -maxdepth 1 -ctime 30

(avec un -exec rm -r {} ; à la fin par exemple)

--
« Ceci n'est pas une signature. » — René Magritte (Apocryphe)
Avatar
Steve
Olivier Miakinen wrote:

Le 23/07/2013 13:59, Steve a écrit :

Maintenant, je souaite éffacer avec un script, le fichier plus vieux d'un
mois
=> rm -abcdef /home/xxx/$(date -I -30 ) ne fonctionne pas... :-)



rm -abcdef /home/xxx/$(date -I --date='1 month ago')
... mais tu risques de ne pas pouvoir effacer les fichiers des 29 au 31
janvier, 31 mars, 31 mai, etc.

rm -abcdef /home/xxx/$(date -I --date='30 days ago')




Meci ... parfait..