Vous pouvez utiliser find
. Calculez la date en fonction de vos besoins et de votre utilisation,
find /tmp -maxdepth 1 -mtime -1 -type f -name "DBG_A_sql*" -print
Après confirmation, supprimez-les,
find /tmp -maxdepth 1 -mtime -1 -type f -name "DBG_A_sql*" -delete
Pour commencer, trouver les fichiers créés sur un certain temps est un peu difficile, car le temps de création n'est généralement enregistré nulle part ou est difficile à obtenir. Ce que vous avez est mtime
, soit l'heure de la dernière modification, et ctime
qui est l'heure de "changement", mise à jour sur toute modification de l'inode. Je suppose que vous voulez l'heure de modification.
Retrouver des fichiers modifiés à une date donnée s'est avéré peu intéressant, puisque find
semble rendre un peu difficile de bien faire les choses avec des fichiers créés exactement à minuit.
Si nous connaissons l'heure relative (c'est-à-dire que c'était hier), nous pourrions utiliser find -daystart -mtime 1
, mais il trouve le fichier modifié au mauvais minuit, Aug 8 00:00
. Cependant, cela semble fonctionner :
find dir/ -daystart -mtime +0 \! -mtime +1 -ls
Si vous ne voulez pas calculer le temps relatif, et votre find
a -newerXY
:
find dir/ -newermt 'Aug 7 00:00' \! -newermt 'Aug 8 00:00' -ls
Encore une fois, cela donne tort aux fichiers créés exactement à minuit, car la comparaison est "plus récente", et non "plus récente ou aussi ancienne que". Bien que si votre système a une précision inférieure à la seconde pour les horodatages, il peut être difficile d'y parvenir, mais cela se produit si vous testez avec des fichiers créés par touch
...
Une solution de contournement velue à cela serait quelque chose comme ceci :
find dir/ -newermt 'Aug 6 23:59:59.999999999' \! -newermt 'Aug 7 23:59:59.999999999' -ls
Dans tous les cas, ajoutez le -name "DBG_A_sql*"
nécessaire pour ne prendre que les fichiers avec le nom correct. Vous pouvez remplacer le -ls
à la fin avec -delete
pour supprimer les fichiers au lieu de les lister. (-ls
, -delete
et -newerXY
existent au moins dans GNU find et BSD find sur OS X.)
Bien sûr, vous pouvez réellement analyser la représentation textuelle de la date, mais ls
il est difficile d'avoir raison si un joker crée des fichiers contenant des caractères non imprimables. Bien sûr, les fichiers d'exemple n'en ont pas, mais en général, n'importe qui peut les créer, surtout en /tmp
.
(Mais avec | xargs rm
vous manqueriez ces fichiers, et comme les noms de fichiers ne peuvent pas contenir de barres obliques, il serait difficile pour quiconque de pointer votre rm
vers un autre répertoire.)
Juste une boucle bash
for file in /tmp/DBG_A_sql* ; do
[ "$(date -I -r "$file")" == "2016-08-07" ] && rm "$file"
done