- Fixes a bug where some location options did not accept yaml aliases (#390, thanks for reporting @zany130).
- Fixes a bug preventing organize from starting (thanks @feather42).
- Fixes a bug where ignoring failing shell commands would not work (thanks @florianklumb).
- Improves the logic of finding and creating config files.
- Fixes a bug where config files in XDG_CONFIG_HOME are not found (#371).
- Fixes a bug in the
relative_pathparameter crashing on actions after moving files (#372).
- Fixes an problem where the
organize newcommand fails to create a new config file.
- Files and folders are now handled in natural sort order (#354).
- Integrated
.docx,.pdfand various raw text parsers intofilecontentfilter. - Removed
textractand ~50 MB of dependencies as they are no longer required. - Full Python 3.12 support
- Add support for piping in a config file from STDIN (
organize run --stdin < file.yml)
Important:
You may have to adjust your filecontent regexes. The output should be a bit cleaner
now.
- Fixes a validation error where correctly defined actions were not accepted in Python 3.12.2.
- Fixes the
organize showcommand which broke in v3.1.0.
- Add a new output format
errorsonlywhich only shows output if an error occured. - Fixes a bug where messages and paths containing brackets where not printed correctly (#348, thanks @kwbr!)
- Fixes a bug where Quicktime and mp4 files return no Exif data. (#313, @jleatham thanks for debugging!)
- Fixes a bug where
exlude_dirsare not correctly excluded. (#339)
- Supports
exiftoolin theexiffilter by setting theORGANIZE_EXIFTOOL_PATHenv var. (thanks to @HernandoR for working on qtff support) - Fixes the
min_depthlocation parameter. (thanks to @danielklim for working on this)
- Fix bug on first run of
organize new. Create the organize config directory if it does not exist. (thanks @white-gecko) - Adds action
hardlink.
- Default to UTF-8 encoding when reading and writing config files for windows users
who don't use python in UTF-8 mode (env variable
PYTHONUTF8=1). write-action: Allow setting the text encoding.
- New action:
writeto write lines into a file. - New filter:
date_lastused(macOS only). - You can now specify the timezone in all time based filters.
- Removed hidden (deprecated) CLI option
--config-file. - Lots of new tests and some bugfixes.
exiffilter now supports the simplematch syntax.- Placeholder
{now}must be{now()}now. - Multiple
paths per location are now supported. - Locations now support a
min_depthoption - Duplicate filter:
detect_original_bynow supportslast_seen. - New command line interface (added
new,showandlistcommands). JSONLoutput (organize run --format=JSONL)moveandcopynow intelligently autodetect if you mean to move to a folder (This autodetection can be deactivated).copyaction: You can now specify whether you want to continue with the original or with the copy.- Completely removes the
pyfilesystemdependency. - At least a 4x speed up. Often more than 10x.
- Modified filter:
exif. Enabled datetime fields on exif data (Issue #266) (Thanks @FlorianFritz) - Support Exif data from Huawei and Honer phones (Thanks @HernandoR)
- Fix reading exif data for HEIC images (Issue #267)
- Fix unicode bug in logging (Issue #294) (Thanks @xdhmoore)
- Updated dependencies (Thanks @gaby)
- Removed support for python 3.7 (EOL - June 2023) (Thanks @gaby)
- New action:
write. - New filter:
date_lastused(macOS only). - Conflict resolution renaming now starts with 2 instead of 1.
- Add support for FS urls as path to the config file and working dir (both in the CLI and ORGANIZE_CONFIG environment variable).
- Removed hidden (deprecated) CLI option
--config-file. - Lots of new tests and some bugfixes.
- New filter:
macos_tags(macOS only). - Ignore broken symlinks (Issue #202)
- Tag support (#199) to run subsets of rules in your config.
- Hotfix for
filecontentfilter.
filecontentfilter: Fixes bug #188.- Bugfix for #185 and #184.
- Added filter
date_added(macOS only) createdfilter now supports gnu coreutils stat utility for birthtime detection- refactored time based filters into a common class
shellshows a message when code is not run in simulationshelladd optionssimulation_outputandsimulation_returncode- fixes a bug where location options are applied to other locations as well
createdfilter now falls back to using the stat utility on linux systems where the birthtime is not included inos.stat.
- Bugfix
shellfor real.
- Bugfix for
shell.
- Speed up moving files.
shellaction: Run command through the user's shell.
- Fixed the migration message and docs URL
- exclude_dir, system_exclude_dirs, exclude_files, system_exclude_files, filter and filter_dirs now accept single strings.
- Fixed a bug in the name filter
- Fixed typo:
system_exlude_files
- Bugfix in env variable expansion in locations
- Small bugfix in
macos_tagsaction. - Bugfix in the migration detection.
This is a huge update with lots of improvements. Please backup all your important stuff before running and use the simulate option!
- You can now target directories with your rules (copying, renaming, etc a whole folder)
- Organize inside or between (S)FTP, S3 Buckets, Zip archives and many more (list of available filesystems).
max_depthsetting when recursing into subfolders- Respects your rule order - safer, less magic, less surprises.
- (organize v1 tried to be clever. v2 now works your config file from top to bottom)
- Jinja2 template engine for placeholders.
- Instant start. (does not need to gather all the files before starting)
- Filters can now be excluded.
- Filter modes:
all,anyandnone. - Rule names.
- new conflict resolution settings in
move,copyandrenameaction:- Options are
skip,overwrite,trash,rename_neworrename_existing - You can now define a custom
rename_template.
- Options are
- The
duplicatenow supports several options on how to distinguish between original and duplicate file. - The
pythonaction can now be run in simulation. - The
shellaction now returns stdout and errorcode. - Added filter
empty- find empty files and folders - Added filter
hash- generate file hashes - Added action
symlink- generate symlinks - Added action
confirm- asks for confirmation - Many small fixes and improvements!
- The
timezonekeyword forlastmodifiedandcreatedwas removed. The timezone is now the local timezone by default. - The
filesizefilter was renamed tosizeand can now be used to get directory sizes as well. - The
filenamefilter was renamed tonameand can now be used to get directory names as well. - The
sizefilter now returns multiple formats
- Glob syntax is gone from folders (no longer needed)
"!"folder exclude syntax is gone (no longer needed)
- Action
macos_tagsnow supports colors and placeholders. - Show full expanded path if folder is not found.
- Add filter
mimetype - Add action
macos_tags - Support
simplematchsyntax inlename-filter. - Updated dependencies
- Because installing
textractis quite hard on some platforms it is now an optional dendency. Install it withpip install organize-tool[textract] - This version needs python 3.6 minimum. Some dependencies that were simply backports (thlib2, typing) are removed.
- Add timezones in created and last_modified filters (Thank you, @win0err!)
- Add {env} variable
- Add {now} variable
- Add filter
Duplicate.
- Fix a bug in the filename filter config parsing algorithm with digits-only filenames.
- Flatten filter and action lists to allow enhanced config file configuration (Thanks to @rawdamedia!)
- Add support for multiline content filters (Thanks to @zor-el!)
- Added action
Delete. - Added filter
FileContent. - Python 3.4 is officially deprecated and no longer supported.
--config-filecommand line option now supports~for user folder and expansion oenvironment variables- Added
years,months,weeksandsecondsparameter to filtercreatedandstmodified
- Added filter
Exifto filter by image exif data. - Placeholder variable properties are now case insensitve.
- Fix
Renameaction ('PosixPath' object has no attribute 'items'). - Use type hints everywhere.
- Shows a warning for missing folders instead of raising an exception.
- Added filter:
Python - Added filter:
FileSize - The organize module can now be run directly:
python3 -m organize - Various code simplifications and speedups.
- Fixes an issue with globstring file exclusion.
- Remove
clintdependency as it is no longer maintained. - Added various integration tests
- The "~~ SIMULATION ~~"-banner now takes up the whole terminal width
- Filename filter now supports lists.
- Environment variables in folder pathes are now expanded (syntax
$nameor${name}a additionally%name%on windows). F example this allows the usage of e.g.%public/Desktop%in windows.
- New filter "Created" to filter by creation date.
- Fixes issue #39 where globstrings don't work most of the time.
- Integration test for issue #39
- Support indented config files
- Fixes issue #31 where the {path} variable always resolves to the source path
- Updated dependencies
- Exclude changelog and readme from published wheel
- Filter and Actions names are now case-insensitive
- Fixes issues #36 with umlauts in config file on windows
- Use safe YAML loader to fix a deprecation warning. (Thanks mope1!)
- Better error message if a folder does not exist. (Again thanks mope1!)
- Fix example code in documentation for LastModified filter.
- Custom config file locations (given by cmd line argument or environment variable).
config --debugnow shows the full path to the config file.
- Fixes a bug with command line arguments in the
$EDITORenvironment viable. - Fixes a bug where an empty config wouldn't show the correct error message.
- Fix binary wheel creation in setup.py by using environment markers
- A custom separator
counter_separatorcan now be set in the actions Move, Cy and Rename.
- Fixes a bug where glob wildcards are not detected correctly
- Adds support for excluding folders and files via glob syntax.
- Makes sure that files are only handled once per rule.
- Glob support in folder configuration.
- New variable {relative_path} is now available in actions.
- Shows the relative path to files in subfolders.
- Removes the colon from extension filter output so
{extension.lower}now rurns'png'instead of'.png'.
- Initial release.