Je stocke des données dans des fichiers qui suivent cette convention de nommage:
/interesting/data/filename-YYYY-MM-DD-HH-MM
Comment chercher ceux avec date in file name < now - 1 month
et les supprimer?
Les fichiers peuvent avoir changé depuis leur création. Vous devez donc effectuer une recherche en fonction de last modification date
n'est pas bon.
Ce que je fais maintenant, c'est filtre en les python:
prefix = '/interesting/data/filename-'
import commands
names = commands.getoutput('ls {0}*'.format(prefix)).splitlines()
from datetime import datetime, timedelta
all_files = map(lambda name: {
'name': name,
'date': datetime.strptime(name, '{0}%Y-%m-%d-%H-%M'.format(prefix))
}, names)
month = datetime.now() - timedelta(days = 30)
to_delete = filter(lambda item: item['date'] < month, all_files)
import os
from operator import itemgetter
map(os.remove, map(itemgetter('name'), to_delete))
Y a-t-il un (une doublure) bash
solution pour cela?
man find
:-ctime n
Le statut du fichier a été modifié pour la dernière fois il y a n * 24 heures. Cela ne renvoie que les noms de fichiers de cette date exacte, mais dans mon cas, il peut y avoir des fichiers plus anciens que, et je ne peux pas dire quel âge ils ont, alors j'ai vraiment besoin d'un `& lt; `ou` & lt; = `comparaison.