file-date-organizer
v0.9.0
Published
Move files into a folder structure organized by date.
Readme
File Date Organizer for NodeJS
The following document applies to the command-line usage of
file-date-organizer. For usage directly in a Node application, please see the alternate README located here.
Purpose
Locate files by date and move them into a date-based folder structure (ie .../YYYY/MM/dd/hh, etc.). Dates are extracted from the file name (ie Screen Shot 2020-05-28 at 10.16.59 AM.png) or the file properties (created date, modified date, etc.).
More info on why I created this is on my blog: https://fredlackey.com
Installation
npm i -g file-date-organizerUsage
Exatract then date from the name of the file ...
file-date-organizer \
--source "/Users/flackey/Documents/Screenshots" \
--target "/Volumes/MPHD01/Screenshots" \
--use-name \
--move \
--recursive \
--overwrite... or, use a file property, such as the creation date ...
file-date-organizer \
--source "/Users/flackey/Documents/Screenshots" \
--target "/Volumes/MPHD01/Screenshots" \
--use-created \
--move \
--recursive \
--overwriteWhen I process images from my camera, I use both the --use-name switch as well as --use-created. This ensures files without a date in the name still get moved properly.
file-date-organizer \
--source '/Users/flackey/pCloud Drive/Automatic Upload/' \
--target /Volumes/MPHD01/Multimedia/Photos/ \
--move \
--use-name \
--use-created \
--recursive \
--overwrite \
--consoleThe addition of the --console switch adds an output which is helpful for long-running operations...

Important:
Combining--use-nameand any other--use*option will cuase--use-nameto be leveraged first. If a valid name can be found within the name then the properties of the file will be ignored.
Parameters
| Name | Description | Type | Default |
|----------------|------------------------------------------|-----------------|---------|
| source | Source Directory | string (path) | |
| target | Desination Directory | string (path) | |
| recursive | Locate files recursively | boolean | true |
| overwrite | Overwrite existing target files | boolean | false |
| ignore | Ignore existing target files | boolean | false |
| copy | Copy the files | boolean | false |
| move | Move the files | boolean | false |
| use-name | Extract date from file name | boolean | false |
| use-created | Use created date for target folder name | boolean | false |
| use-modified | Use modified date for target folder name | boolean | false |
| add-type | Target folder name includes file type | boolean | false |
| add-year | Target folder name includes file year | boolean | true |
| add-month | Target folder name includes file month | boolean | true |
| add-day | Target folder name includes file day | boolean | true |
| add-hour | Target folder name includes file hour | boolean | false |
| add-minute | Target folder name includes file minute | boolean | false |
| add-second | Target folder name includes file second | boolean | false |
| console | Log activity to console | boolean | false |
| limit | Number of files to process | number | |
| allow-future | Allow file names with date in future | boolean | false |
Contact
Please feel free to contact me directly with any questions, comments, or enhancement requests:
Fred Lackey
[email protected]
http://fredlackey.com
