Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cole-wilson/nought
A super customizable file cleaner/organizer/automator.
https://github.com/cole-wilson/nought
Last synced: 15 days ago
JSON representation
A super customizable file cleaner/organizer/automator.
- Host: GitHub
- URL: https://github.com/cole-wilson/nought
- Owner: cole-wilson
- License: apache-2.0
- Created: 2020-11-15T17:47:47.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2020-11-28T02:42:38.000Z (almost 4 years ago)
- Last Synced: 2024-09-18T18:44:28.705Z (about 2 months ago)
- Language: Python
- Size: 18 MB
- Stars: 11
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-hackclub - nought - [@cole-wilson](https://github.com/cole-wilson) - **(Python)** _A super customizable file cleaner/organizer/automator for developers._ (CLI Tools)
- jimsghstars - cole-wilson/nought - A super customizable file cleaner/organizer/automator. (Python)
README
# nought [![Share the word!](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?url=https%3A%2F%2Fgithub.com%2Fcole-wilson%2Fnought&text=Automate%20your%20folder%20organization%20with%20nought%2C%20the%20super%20customizable%20desktop%20organizer.&hashtags=opensource%2Cgithub%2Cpython%2Corganizer)
`nought` is a super customizable file cleaner/organizer/automator that can help keep you organized.
It lets you have complete control over all of it's options (there are many)
## Installation
> **Note:** Please ensure that you have Python 3.6+ and `pip` installed on your computer before completing the following steps:THIS TOOL HAS NOT BEEN TESTED FOR WINDOWS. USE AT YOUR OWN RISK FOR WINDOWS...
User only install: `sudo pip3 install nought --user`
System wide install: `sudo pip3 install nought`
## Usage
```text
usage: nought [options] [identifiers ...]
Runs `nought`, the super customizable file cleaner/organizer/automator
Options:
-c [location], --config [location] specify configuration file. Default: "./nought.toml" (see -d and "Environment Variables")
-b [location], --backup [location] backup files to specified location. Default: false
-d, --default set the config file as default
-a, --about display version and exit
-h, --help display this help message
-t, --test test configuration without actually doing anything (enables verbose mode)
Arguments:
IDENTIFIERS: a repeatable identifier for which groups to run
Environment Variables:
NOUGHT_CONFIG: the path to the default configuration file
```
For example, to run the `r1` routine in config file `/etc/nought/conf.toml` after backing up all directories you would run:
`nought -bc /etc/nought/conf.toml r1`
The default config file location is stored in the `NOUGHT_CONFIG` environment variable.
## Configuration
The configuration file is a [toml](https://github.com/toml-lang/toml) file where you set routines and rules.
Here is an example one with comments:
```toml
[general]
base_dir = "~/" # (optional, default="./") The starting directory[[group]] # This entire section can be repeatable
path = "~/Desktop" # A string OR list of the location(s) the group applies to. (required)
id = "test" # (optional, default="./") A string OR list of identifiers (used in command line). If none is supplied, it is applied for all ids. If it is "default", then it is applied when no id is specified in command.
recursive = true # (optional, default="./") Whether or not edit files recursively.
include_dirs = true # (optional, default="./") Whether to treat directories as files. WARNING: DIRECTORIES INCLUDE ALL FILES IN THEM![[group.rule]] # Repeatable per group, matches file
# Below are all the conditions that can be used to match files. ALL conditions must be met to perform action:
# All values in underscore curly braces (_{code here}) are evaluated as python expressions, like this: "./home/${2*90}/test.txt" turns to "./home/180/test.txt"
includes = [".jpg",".png"] # A list of non regex strings to search for IN FILENAME
regex = '[Ss]creenshot(.*?)' # A regex string to match filename against. Capturing groups can be reused later. Use single quotes.
size_less_than = 12 # Number of bytes (use less than 0 for empty files)
size_more_than = 2 # Number of bytes
content_includes = "text" # A non regex string to search for in file CONTENT
custom = "len(open('$name').read().split()) > 2" # A python expression that returns True or False. `$name` is substituted with filename.
modified_before = 8736423423 # A Unix timestamp in seconds. Negative values are subtracted from current time.
modified_after = -1978263 # A Unix timestamp in seconds. Negative values are subtracted from current time.
user = "root" # Matches Unix user name
group = "www-data" # Matches Unix group name
# `action` can be one of the following:
action = "move" # Moves or renames file
action = "delete" # Deletes file
action = "script" # Runs a script
move_to = "folder" # moves into folder
move_to = "screenshots/$1/$name" # moves using regex backreferences and `$name` replacement.script = "nano $name" # $name is replaced with file
[group.other] # this matches all files that haven't been matched (single brackets)
action = "move"
move_to = "other"
```
All values in underscore curly braces (_{code here}) are evaluated as python expressions, like this: `./home/_{2*90}/test.txt` turns to `./home/180/test.txt`
$bp is replaced with the starting path or the rule.
$bd is replaced with the base dir of the entire config file.
## Upcoming
I will be adding NOT conditions soon.
## Contribution
Please submit a PR if you want to help! It would be especially helpful if someone tests for windows.
## Contact
If you need any help with anything, even how to write your config file, contact:
[`[email protected]`](mailto:[email protected])