diff --git a/files/daterake b/files/daterake index 81379ea..bae640a 100755 --- a/files/daterake +++ b/files/daterake @@ -1,13 +1,12 @@ #!/usr/bin/env python3 import argparse -import glob import json import os import sys -from datetime import datetime, timedelta +from datetime import datetime -__version__ = "20251107.01" +__version__ = "20251107.02" def filter_entries(entries, years=6, months=6, weeks=6, days=6, head=5): @@ -56,7 +55,6 @@ def filter_entries(entries, years=6, months=6, weeks=6, days=6, head=5): result.extend([entry for i, entry in enumerate(reduce(entries, date2month, start_date, "month")) if i < months]) start_date = result[-1][1].date() result.extend([entry for i, entry in enumerate(reduce(entries, date2year, start_date, "year")) if i < years]) - start_date = result[-1][1].date() result.sort(key=lambda x: x[1], reverse=True) @@ -67,7 +65,8 @@ def filter_entries(entries, years=6, months=6, weeks=6, days=6, head=5): def get_opts(): parser = argparse.ArgumentParser( - description="Filter entries based on file timestamps, or parse dates. Filenames read from stdin" + description="Filter entries based on file timestamps, or parsed dates for keeping backups for example. Filenames read from stdin. ", + epilog="Example usage (watch out for actual deletion): # ls | grep ^backup- | daterake -n 5 --drop | xargs echo rm -v ", ) parser.add_argument("--version", action="version", version=__version__) @@ -88,7 +87,7 @@ def get_opts(): ) parser.add_argument("--json", default=False, action="store_true", help="Print output as JSON") parser.add_argument("--verbose", "-v", default=False, action="store_true", help="Print output as verbose table") - parser.add_argument("--invert", default=False, action="store_true", help="Print names to remove") + parser.add_argument("--invert", "--drop", default=False, action="store_true", help="Print the names to remove") parser.add_argument( "--parse", default=None, help="Parse names, instead of using file timestamps (ex: 'service-%%Y-%%m-%%d.log')"