filesystem-timestamp-modifier v0.0.2
filesystem-timestamp-modifier
This tool enables you to modify the timestamp of files on your macOS or Linux filesystem. Sometimes file modified timestamps are changed accidentally, even if you didn't make actual changes to the file, or if you made a change and then decided to undo it. Timestamps add context to files, especially when searching for something you've recently modified or when sorting files from oldest last modified to latest modified.
Installation
Install from the NPM registry as a global CLI tool:
$ npm i filesystem-timestamp-modifier -gExamples
Create a sample file called "testfile":
$ echo "hello world" > ./testfile && ls -lT ./testfileIt should now have whatever the current date and time is for the file's modified time. For example, if it's Sunday, October 9th at 9:50 PM, then you'll see this as the output:
-rw-r--r-- 1 james staff 12 Oct 9 21:50:14 2022 ./testfileYou can now try the examples below to modify the timestamp.
Change timestamp of "testfile to September 2nd, 2021 at 9:02 PM local time.
$ lastmod --file ./testfile --time "September 2, 2021 9:09 PM"Result:
$ ls -lT ./testfile
-rw-r--r-- 1 james staff 12 Sep 2 21:09:00 2021 ./testfileChange timestamp of "testfile" to September 5th, 2021 at 8:01 PM local time.
$ lastmod --file ./testfile --time `node -p "new Date('September 5, 2021 8:01 PM').getTime()"`This results in:
$ ls -lT ./timestamp
-rw-r--r-- 1 james staff 0 Sep 6 20:01:00 2021 ./testfileUse as a function in a Node.js codebase
This module can also be used locally inside a codebase.
$ npm i filesystem-timestamp-modifierThen use it like this:
const updateFileTimestamps = require('filesystem-timestamp-modifier');
updateFileTimestamps('./testfile', new Date('September 5, 2021 8:01 PM').getTime());Contributing
Cloning and setup
Clone the project and install dependencies:
$ npm iRun the tests:
$ npm testNOTE: If running from the source, replace "lastmod" with "node cli.js" in the examples section above.
Run tests within Docker/Podman
npm test runs tests in the development OS, whatever OS you're running on. If making changes to the tests, it's helpful to verify they work in various shell environments. One way to quickly validate this is via container images.
To test on a specific Linux platform, substitute the container image tag with the IMAGE_TAG build-arg. For example, the two entries below show how to run the test on Alpine and Debian after first building test images:
Alpine Linux:
$ docker build --build-arg IMAGE_TAG=16.17.1-alpine3.15 -f Dockerfile -t alpine/lastmod .
$ docker run --rm -it alpine/lastmodDebian:
$ docker build --build-arg IMAGE_TAG=lts-buster-slim -f Dockerfile -t debian/lastmod .
$ docker run --rm -it debian/lastmodLicense
Copyright (c) James Mortensen, 2022 MIT License