Add timestamp tool
This commit is contained in:
parent
6f68fccaf0
commit
c8f92c0abe
46
scripts/normalize-timestamp
Executable file
46
scripts/normalize-timestamp
Executable file
@ -0,0 +1,46 @@
|
|||||||
|
#! /usr/bin/env python3
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import sys
|
||||||
|
import logging
|
||||||
|
import subprocess
|
||||||
|
from pathlib import Path
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
def main() -> int:
|
||||||
|
# Handle program arguments
|
||||||
|
ap = argparse.ArgumentParser(prog='normalize-timestamp', description='Normalizes timestamps on files')
|
||||||
|
ap.add_argument("--mode", help="Normalization mode", choices=["earliest", "latest"], default="earliest")
|
||||||
|
ap.add_argument('files', help='Files to normalize', nargs='+', type=Path)
|
||||||
|
ap.add_argument('-v', '--verbose', help='Enable verbose logging', action='store_true')
|
||||||
|
args = ap.parse_args()
|
||||||
|
|
||||||
|
# Configure logging
|
||||||
|
logging.basicConfig(
|
||||||
|
level=logging.DEBUG if args.verbose else logging.INFO,
|
||||||
|
format='%(levelname)s: %(message)s',
|
||||||
|
)
|
||||||
|
|
||||||
|
# Iter files
|
||||||
|
for file in args.files:
|
||||||
|
|
||||||
|
# Read the timestamps
|
||||||
|
creation_time = datetime.fromtimestamp(file.stat().st_ctime)
|
||||||
|
modification_time = datetime.fromtimestamp(file.stat().st_mtime)
|
||||||
|
|
||||||
|
# Normalize the timestamps
|
||||||
|
if args.mode == "earliest":
|
||||||
|
new_time = min(creation_time, modification_time)
|
||||||
|
else:
|
||||||
|
new_time = max(creation_time, modification_time)
|
||||||
|
|
||||||
|
# Set the new timestamps
|
||||||
|
logger.info(f"Setting {args.mode} timestamp on {file}")
|
||||||
|
subprocess.run(["touch", "-t", new_time.strftime("%Y%m%d%H%M.%S"), file])
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
sys.exit(main())
|
Loading…
x
Reference in New Issue
Block a user