OVH Cloud OVH Cloud

effacer des fichier dans l'ordre chronologique

5 réponses
Avatar
mister_eon
bonjour

j'ai une serie de fichier nommer fichier20031001, fichier20031002,
fichier20031003 ...
j'aimerai effacer tous les fichiers datant des 15 dernier jours

comment faire pour comparer la date actuelle avec la date des fichier
a effacer ?

j'attend vos reponse avec impatience
merci d avance

mister_eon@hotmail.com

5 réponses

Avatar
J. Mayer
On Wed, 01 Oct 2003 03:52:44 -0700, Antoine wrote:

bonjour

j'ai une serie de fichier nommer fichier20031001, fichier20031002,
fichier20031003 ...
j'aimerai effacer tous les fichiers datant des 15 dernier jours

comment faire pour comparer la date actuelle avec la date des fichier
a effacer ?

j'attend vos reponse avec impatience
merci d avance




find . -mtime -16

Avatar
mister_eon
(Antoine) wrote in message news:...
bonjour

j'ai une serie de fichier nommer fichier20031001, fichier20031002,
fichier20031003 ...
j'aimerai effacer tous les fichiers datant des 15 dernier jours

comment faire pour comparer la date actuelle avec la date des fichier
a effacer ?

j'attend vos reponse avec impatience
merci d avance





j'ai une idee sur la facon de procede
j'imagine qu avec find je doit pouvoir trouver le(s) fichier(s) qui
ont une date de creation de 15 jours
est ce une bone methode ou non ?

Antoine

Avatar
mister_eon
(Antoine) wrote in message news:...
bonjour

j'ai une serie de fichier nommer fichier20031001, fichier20031002,
fichier20031003 ...
j'aimerai effacer tous les fichiers datant des 15 dernier jours

comment faire pour comparer la date actuelle avec la date des fichier
a effacer ?

j'attend vos reponse avec impatience
merci d avance




en fait j ai trouver ca :
find /home -ctime -1 -exec rm {} ;


Eon

Avatar
Olivier
Le Wed, 01 Oct 2003 08:00:35 -0700, Antoine nous gratifiait d'un  :


en fait j ai trouver ca :
find /home -ctime -1 -exec rm {} ;


Bonjour
un find /home -ctime -1 |xargs -r rm
me semble plus adapté (utilise moins de ressource)

Avatar
Stephane CHAZELAS
Le 1 Oct 2003 08:00:35 -0700, Antoine écrivait :
[...]
j'ai une serie de fichier nommer fichier20031001, fichier20031002,
fichier20031003 ...
j'aimerai effacer tous les fichiers datant des 15 dernier jours

comment faire pour comparer la date actuelle avec la date des fichier
a effacer ?
[...]


en fait j ai trouver ca :
find /home -ctime -1 -exec rm {} ;


-ctime, c'est pour la date de dernière modification de l'i-node
(status change time). Pour la date de dernière modif du fichier
(qui implique une modification de l'inode, mais ce n'est pas
réciproque), c'est -mtime, il n'y a pas de date de création sous
Unix.

Avec le shell zsh, pour effacer les fichiers vieux de moins de
15 jours:

rm fichier????????(m-15)

Si tu veux les fichiers dont le *nom* indique qu'il est vieux
de moins de 15 jours, tu peux faire:

setopt extendedglob
range=$(date -d -15days +'fichier<%Y%m%d->')
# range devient fichier<20030921-> ce qui pour zsh veut dire les
# fichiers dont le nom est de la forme "fichier" suivi d'un
# nombre supérieur ou égal à 20030921.
rm $~range
# qu'on peut contracter en :
rm ${~"$(date -d -15days +'fichier<%Y%m%d->')"}

ou
first=$(date -d -15days +fichier%Y%m%d)
rm fichier????????(e{'[[ $REPLY >= $first ]]'})

Avec find:

find . -maxdepth 1 -name 'fichier????????'
-exec test '{}' >= "$(date -d -15days +./fichier%Y%m%d)"
-print0 | xargs -0 rm

ou

find . -maxdepth 1 -name fichier???????? -mtime -15 -print0 |
xargs -0 rm --

De manière générale éviter le -print | xargs (sans "0") car ça
foire dès qu'il y a des espaces tab, NL, des single/double
quotes, des backslashs dans les noms des fichiers.

--
Stéphane