Я храню некоторые данные в файлах, которые следуют этому соглашению об именах:
/interesting/data/filename-YYYY-MM-DD-HH-MM
Как мне найти те с date in file name < now - 1 month
и удалить их?
Файлы могли измениться с момента их создания, поэтому поиск по last modification date
не годится.
То, что я делаю сейчас, это их фильтрация в 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))
Есть ли (oneliner) решение для bash
для этого?