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-organizer
Usage
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 \
--overwrite
When 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 \
--console
The addition of the --console
switch adds an output which is helpful for long-running operations...
Important:
Combining --use-name
and any other --use*
option will cuase --use-name
to 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
fred.lackey@gmail.com
http://fredlackey.com