mmf is a cli tool for organising files on your computer. Tell it the file name patterns, where to move and matching files from a source directory are moved to target directory. Run it as one-off command or in watch mode to continously observe a source directory.
Prerequisites:
- Python >=3.5
pippackage manager
Install mmf using:
# Install or upgrade mmf
pip install move-my-files -UMove files using either one time command or watch mode:
# Supply source and destination directory explicitly
mmf move --source ~/Documents --dest-dir ~/Documents/images --pattern .png
# Uses predefined configuration(provided in using add command)
mmf move --source ~/Documents
# Watch ~/Documents directory for moving files
mmf move --source ~/Documents --dest-dir ~/Documents/images --pattern .png --watch
mmf move --source ~/Documents --watchDefine your favorite configurations using add command. This command keeps track of your configurations so they are not required to be typed in future. Use list command to list configurations you've previosly added.
# Add configuration
mmf add --dest-dir ~/Documents/images --pattern .png --name imagefiles
mmf add --dest-dir ~/Documents/pyfiles --pattern .py --name pyfiles
# List configurations (previously added)
mmf list
# move without --dest-dir will use configurations
mmf move --source ~/Documents --watchAvailable shortcuts for options:
--source:-s--dest-dir:-d--pattern:-p--watch:-w--name:-n
Fork and clone this repository to develop on latest master branch. General steps to execute python code from this repo:
# Create development environment
cd /move-my-files
python3 -m venv .env && source .env/bin/activate
pip install -e '.[dev]'
# Execute CLI (from code)
cd ./app
python3 .
python3 . list
# Or directly
mmf --helpLocal testing with unit tests and CLI:
# Run available unit tests
python3 -m pytest tests -v
# Install CLI locally to test (basically testing setup.py)
pip install -e .
mmf --helpYou can also use tox to test on different environments.
For Packaging and publishing see here:
If you have ideas to improve this tool, feel free to raise a new issue in the Issues section or open a PR :)