Locations#
Locations are the folders in which organize searches for resources. You can set multiple locations for each rule if you want.
A minimum location definition is just a path where to look for files / folders:
rules:
- locations: ~/Desktop
actions: ...
If you want to handle multiple locations in a rule, create a list:
rules:
- locations:
- ~/Desktop
- /usr/bin/
- "%PROGRAMDATA%/test"
actions: ...
Using options:
rules:
- name: "Location list"
locations:
- path: "~/Desktop"
max_depth: 3
actions: ...
Location options#
rules:
- locations:
- path: ...
min_depth: ...
max_depth: ...
search: ...
exclude_files: ...
exclude_dirs: ...
system_exclude_files: ...
system_exclude_dirs: ...
ignore_errors: ...
filter: ...
filter_dirs: ...
path (str
)
Path to a local folder
min_depth (int
or null
)
Minimum directory depth to search. This can be useful if you want to only handle files
in subdirectories of location
.
max_depth (int
or null
)
Maximum directory depth to search.
search ("breadth"
or "depth"
)
Whether to use breadth or depth search to recurse into subfolders. Note that if you
want to move or delete files from this location, this has to be set to "depth"
.
(Default: "depth"
)
exclude_files (List[str]
)
A list of filename patterns that should be excluded in this location, e.g. ["~*"]
.
exclude_dirs (List[str]
)
A list of folder name patterns that will be used to filter out directory names in
this location. e.g. ["do-not-move", "*-Important", "Backup*"]
system_exclude_files (List[str]
)
The list of filename patterns that are excluded by default. Defaults to:
["thumbs.db", "desktop.ini", "~$*", ".DS_Store", ".localized"]
. Override with []
to include system files.
system_exclude_dirs (List[str]
)
The list of folder name patterns that are excluded by default (['.git', '.svn']
). Override with []
to include system dirs.
ignore_errors (bool
)
If true
, any errors reading the location will be ignored.
filter (List[str]
)
A list of filename patterns that should be used in this location, e.g. ["*.py"]
.
All other files are skipped.
filter_dirs (List[str]
)
A list of patterns to match directory names that are included in this location.
All other directories are skipped.
max_depth
and subfolders
#
- If
subfolders: true
is specified on the rule, all locations are set tomax_depth: null
by default. - A
max_depth
setting in a location is given precedence over the rule'ssubfolders
setting.
Environment variables in locations#
You can use environment variables in your locations. You can access them via the {env}
placeholder or prefix them with a dollar sign.
Examples:
rules:
- locations:
# via {env} - the "" are important here!
- "{env.MY_FOLDER}"
# via $ - equal to the one above.
- "$MY_FOLDER"
# with location options
- path: "{env.OTHER_FOLDER}/Inbox/Invoices"
max_depth: null
actions:
- echo: "{path}"
Relative locations#
Locations can be relative. This allows you to create simple one-off rules that can be copied between projects.
There is a command line option to change the working directory should you need it.
huge-pic-warner.yaml:
rules:
- locations: "docs" # here "docs" is relative to the current working dir
filters:
- extension: jpg
- size: ">3 MB"
actions:
- echo: "Warning - huge pic found!"
Then run it with:
organize sim huge-pic-warner.yaml --working-dir=some/other/dir/