Skip to content

This morning at dawn, you will take a new form - that of a fleshless, chattering skeleton when Zorp the Surveyor arrives and burns your flesh off with his volcano mouth

License

Notifications You must be signed in to change notification settings

1kbgz/organizeit2

Repository files navigation

organizeit2

Engage with Zorp!

Build Status codecov License PyPI

This morning at dawn, you will take a new form - that of a fleshless, chattering skeleton when Zorp the Surveyor arrives and burns your flesh off with his volcano mouth ~Lou Prozotovich

OrganizeIt2 is a python library for managing large numbers of files and directories. It is type- and configuration-driven with pydantic.

The name is because organizeit was taken on pypi, and is thus a reference to the joke from Parks and Rec.

Overview

OrganizeIt2 has the following models and types:

  • FileSystem: pydantic wrapper of an fsspec AbstractFileSystem
  • Path: wrapper of an fsspec path
  • FilePath: specialization of a Path for files
  • DirectoryPath: specialization of a Path for directories
  • OrganizeIt: Top-level pydantic model representiing an fsspec directory
  • Directory: pydantic model representing an fsspec directory
  • File: pydantic model representing an fsspec file

CLI Examples

There are two main commands: match and rematch, which perform glob-based matching and regex-based matching respectively.

> organizeit match --help

 Usage: organizeit match [OPTIONS] DIRECTORY PATTERN

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ *    directory      TEXT  [required]                                                 │
│ *    pattern        TEXT  [required]                                                 │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --list           -l  --no-list           -L              [default: no-list]          │
│ --name-only      -n  --no-name-only      -N              [default: name-only]        │
│ --invert         -i  --no-invert         -I              [default: no-invert]        │
│ --size           -s  --no-size           -S              [default: no-size]          │
│ --modified       -m  --no-modified       -M              [default: no-modified]      │
│ --limit                                      INTEGER                                 │
│ --leaves                                     INTEGER                                 │
│ --by                                         TEXT                                    │
│ --desc                                                                               │
│ --block-size                                 INTEGER     [default: 0]                │
│ --op                                         [rm|touch]                              │
│ --dry-run        -d  --no-dry-run        -D              [default: no-dry-run]       │
│ --ignore-errors      --no-ignore-errors                  [default: no-ignore-errors] │
│ --retries                                    INTEGER     [default: 1]                │
│ --help                                                   Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯
> organizeit rematch --help

 Usage: organizeit rematch [OPTIONS] DIRECTORY PATTERN

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ *    directory      TEXT  [required]                                                 │
│ *    pattern        TEXT  [required]                                                 │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --list           -l  --no-list           -L              [default: no-list]          │
│ --name-only      -n  --no-name-only      -N              [default: name-only]        │
│ --invert         -i  --no-invert         -I              [default: no-invert]        │
│ --size           -s  --no-size           -S              [default: no-size]          │
│ --modified       -m  --no-modified       -M              [default: no-modified]      │
│ --limit                                      INTEGER                                 │
│ --leaves                                     INTEGER                                 │
│ --by                                         TEXT                                    │
│ --desc                                                                               │
│ --block-size                                 INTEGER     [default: 0]                │
│ --op                                         [rm|touch]                              │
│ --dry-run        -d  --no-dry-run        -D              [default: no-dry-run]       │
│ --ignore-errors      --no-ignore-errors                  [default: no-ignore-errors] │
│ --retries                                    INTEGER     [default: 1]                │
│ --help                                                   Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

Here are some example commands and outputs, based on the test suite

> find organizeit2/tests/directory
.
organizeit2/tests/directory
organizeit2/tests/directory/subdir1
organizeit2/tests/directory/subdir1/file1.md
organizeit2/tests/directory/subdir1/file1.png
organizeit2/tests/directory/subdir1/file2.png
organizeit2/tests/directory/subdir1/file2.txt
organizeit2/tests/directory/subdir1/file2.md
organizeit2/tests/directory/subdir1/subsubdir1
organizeit2/tests/directory/subdir1/subsubdir1/file1
organizeit2/tests/directory/subdir1/subsubdir1/file1.md
organizeit2/tests/directory/subdir1/subsubdir1/file1.png
organizeit2/tests/directory/subdir1/subsubdir1/file1.txt
organizeit2/tests/directory/subdir1/subsubdir1/file2
organizeit2/tests/directory/subdir1/subsubdir1/file2.md
organizeit2/tests/directory/subdir1/subsubdir1/file2.png
organizeit2/tests/directory/subdir1/subsubdir1/file2.txt
organizeit2/tests/directory/subdir1/subsubdir2
organizeit2/tests/directory/subdir1/subsubdir2/file1
organizeit2/tests/directory/subdir1/subsubdir2/file1.md
organizeit2/tests/directory/subdir1/subsubdir2/file1.png
organizeit2/tests/directory/subdir1/subsubdir2/file1.txt
organizeit2/tests/directory/subdir1/subsubdir2/file2
organizeit2/tests/directory/subdir1/subsubdir2/file2.md
organizeit2/tests/directory/subdir1/subsubdir2/file2.png
organizeit2/tests/directory/subdir1/subsubdir2/file2.txt
organizeit2/tests/directory/subdir2
organizeit2/tests/directory/subdir2/file1.md
organizeit2/tests/directory/subdir2/file1.png
organizeit2/tests/directory/subdir2/file2.png
organizeit2/tests/directory/subdir2/file2.txt
organizeit2/tests/directory/subdir2/file2.md
organizeit2/tests/directory/subdir2/subsubdir1
organizeit2/tests/directory/subdir2/subsubdir1/file1
organizeit2/tests/directory/subdir2/subsubdir1/file1.md
organizeit2/tests/directory/subdir2/subsubdir1/file1.png
organizeit2/tests/directory/subdir2/subsubdir1/file1.txt
organizeit2/tests/directory/subdir2/subsubdir1/file2
organizeit2/tests/directory/subdir2/subsubdir1/file2.md
organizeit2/tests/directory/subdir2/subsubdir1/file2.png
organizeit2/tests/directory/subdir2/subsubdir1/file2.txt
organizeit2/tests/directory/subdir2/subsubdir2
organizeit2/tests/directory/subdir2/subsubdir2/file1
organizeit2/tests/directory/subdir2/subsubdir2/file1.md
organizeit2/tests/directory/subdir2/subsubdir2/file1.png
organizeit2/tests/directory/subdir2/subsubdir2/file1.txt
organizeit2/tests/directory/subdir2/subsubdir2/file2
organizeit2/tests/directory/subdir2/subsubdir2/file2.md
organizeit2/tests/directory/subdir2/subsubdir2/file2.png
organizeit2/tests/directory/subdir2/subsubdir2/file2.txt
organizeit2/tests/directory/subdir3
organizeit2/tests/directory/subdir3/file1.md
organizeit2/tests/directory/subdir3/file1.png
organizeit2/tests/directory/subdir3/file2.png
organizeit2/tests/directory/subdir3/file2.txt
organizeit2/tests/directory/subdir3/file2.md
organizeit2/tests/directory/subdir3/subsubdir1
organizeit2/tests/directory/subdir3/subsubdir1/file1
organizeit2/tests/directory/subdir3/subsubdir1/file1.md
organizeit2/tests/directory/subdir3/subsubdir1/file1.png
organizeit2/tests/directory/subdir3/subsubdir1/file1.txt
organizeit2/tests/directory/subdir3/subsubdir1/file2
organizeit2/tests/directory/subdir3/subsubdir1/file2.md
organizeit2/tests/directory/subdir3/subsubdir1/file2.png
organizeit2/tests/directory/subdir3/subsubdir1/file2.txt
organizeit2/tests/directory/subdir3/subsubdir2
organizeit2/tests/directory/subdir3/subsubdir2/file1
organizeit2/tests/directory/subdir3/subsubdir2/file1.md
organizeit2/tests/directory/subdir3/subsubdir2/file1.png
organizeit2/tests/directory/subdir3/subsubdir2/file1.txt
organizeit2/tests/directory/subdir3/subsubdir2/file2
organizeit2/tests/directory/subdir3/subsubdir2/file2.md
organizeit2/tests/directory/subdir3/subsubdir2/file2.png
organizeit2/tests/directory/subdir3/subsubdir2/file2.txt
organizeit2/tests/directory/subdir4
organizeit2/tests/directory/subdir4/file1.md
organizeit2/tests/directory/subdir4/file1.png
organizeit2/tests/directory/subdir4/file2.png
organizeit2/tests/directory/subdir4/file2.txt
organizeit2/tests/directory/subdir4/file2.md
organizeit2/tests/directory/subdir4/subsubdir1
organizeit2/tests/directory/subdir4/subsubdir1/file1
organizeit2/tests/directory/subdir4/subsubdir1/file1.md
organizeit2/tests/directory/subdir4/subsubdir1/file1.png
organizeit2/tests/directory/subdir4/subsubdir1/file1.txt
organizeit2/tests/directory/subdir4/subsubdir1/file2
organizeit2/tests/directory/subdir4/subsubdir1/file2.md
organizeit2/tests/directory/subdir4/subsubdir1/file2.png
organizeit2/tests/directory/subdir4/subsubdir1/file2.txt
organizeit2/tests/directory/subdir4/subsubdir2
organizeit2/tests/directory/subdir4/subsubdir2/file1
organizeit2/tests/directory/subdir4/subsubdir2/file1.md
organizeit2/tests/directory/subdir4/subsubdir2/file1.png
organizeit2/tests/directory/subdir4/subsubdir2/file1.txt
organizeit2/tests/directory/subdir4/subsubdir2/file2
organizeit2/tests/directory/subdir4/subsubdir2/file2.md
organizeit2/tests/directory/subdir4/subsubdir2/file2.png
organizeit2/tests/directory/subdir4/subsubdir2/file2.txt
organizeit match file://organizeit2/tests/directory/ "directory*"
echo $?
Unmatched
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Path                                                   ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ file://organizeit2/organizeit2/tests/directory/subdir2 │
│ file://organizeit2/organizeit2/tests/directory/subdir4 │
│ file://organizeit2/organizeit2/tests/directory/subdir3 │
│ file://organizeit2/organizeit2/tests/directory/subdir1 │
└────────────────────────────────────────────────────────┘
1

organizeit match file://organizeit2/tests/directory/ "directory*" --invert
echo $?
All matched
0

organizeit match file://organizeit2/tests/directory/ "directory" --no-name-only
echo $?
Unmatched
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Path                                                   ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ file://organizeit2/organizeit2/tests/directory/subdir3 │
│ file://organizeit2/organizeit2/tests/directory/subdir1 │
│ file://organizeit2/organizeit2/tests/directory/subdir2 │
│ file://organizeit2/organizeit2/tests/directory/subdir4 │
└────────────────────────────────────────────────────────┘
1

organizeit match file://organizeit2/tests/directory/ "directory" --no-name-only --invert
echo $?
All matched
0

organizeit match file://organizeit2/tests/directory/ "*organizeit2*directory" --no-name-only
echo $?
Unmatched
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Path                                                   ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ file://organizeit2/organizeit2/tests/directory/subdir3 │
│ file://organizeit2/organizeit2/tests/directory/subdir4 │
│ file://organizeit2/organizeit2/tests/directory/subdir2 │
│ file://organizeit2/organizeit2/tests/directory/subdir1 │
└────────────────────────────────────────────────────────┘
1

organizeit match file://organizeit2/tests/directory/ "*organizeit2*directory" --no-name-only --invert
echo $?
All matched
0

organizeit match file://organizeit2/tests/directory/ "subdir*"
echo $?
All matched
0

organizeit match file://organizeit2/tests/directory/ "dir*"
echo $?
Unmatched
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Path                                                   ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ file://organizeit2/organizeit2/tests/directory/subdir3 │
│ file://organizeit2/organizeit2/tests/directory/subdir1 │
│ file://organizeit2/organizeit2/tests/directory/subdir2 │
│ file://organizeit2/organizeit2/tests/directory/subdir4 │
└────────────────────────────────────────────────────────┘
1

organizeit match file://organizeit2/tests/directory/ "subdir*" --list --invert
echo $?
organizeit2/organizeit2/tests/directory/subdir2
organizeit2/organizeit2/tests/directory/subdir4
organizeit2/organizeit2/tests/directory/subdir1
organizeit2/organizeit2/tests/directory/subdir3
1

organizeit rematch file://organizeit2/tests/directory/ "directory"
echo $?
Unmatched
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Path                                                   ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ file://organizeit2/organizeit2/tests/directory/subdir2 │
│ file://organizeit2/organizeit2/tests/directory/subdir3 │
│ file://organizeit2/organizeit2/tests/directory/subdir1 │
│ file://organizeit2/organizeit2/tests/directory/subdir4 │
└────────────────────────────────────────────────────────┘
1

organizeit rematch file://organizeit2/tests/directory/ "directory" --invert
echo $?
All matched
0

organizeit rematch file://organizeit2/tests/directory/ "directory" --no-name-only
echo $?
Unmatched
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Path                                                   ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ file://organizeit2/organizeit2/tests/directory/subdir2 │
│ file://organizeit2/organizeit2/tests/directory/subdir3 │
│ file://organizeit2/organizeit2/tests/directory/subdir1 │
│ file://organizeit2/organizeit2/tests/directory/subdir4 │
└────────────────────────────────────────────────────────┘
1

organizeit rematch file://organizeit2/tests/directory/ "directory" --no-name-only --invert
echo $?
All matched
0

organizeit rematch file://organizeit2/tests/directory/ "file://[a-zA-Z0-9/]*" --no-name-only
echo $?
All matched
0

organizeit rematch file://organizeit2/tests/directory/ "subdir[0-9]+"
echo $?
All matched
0

organizeit rematch file://organizeit2/tests/directory/ "subdir[0-3]+"
echo $?
Unmatched
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Path                                                   ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ file://organizeit2/organizeit2/tests/directory/subdir4 │
└────────────────────────────────────────────────────────┘
1

organizeit rematch file://organizeit2/tests/directory/ "subdir*" --list --invert
echo $?
organizeit2/organizeit2/tests/directory/subdir4
organizeit2/organizeit2/tests/directory/subdir1
organizeit2/organizeit2/tests/directory/subdir3
organizeit2/organizeit2/tests/directory/subdir2
1

organizeit match file://organizeit2/tests/directory/subdir1/ "*" --list --limit=2 --leaves=7 --invert --by="age"
echo $?
organizeit2/organizeit2/tests/directory/subdir1/file2.png
organizeit2/organizeit2/tests/directory/subdir1/file1.png
1

organizeit rematch file://organizeit2/tests/directory/subdir1/ ".*" --no-list --limit=2 --leaves=7 --invert --by="age"
echo $?
Unmatched
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Path                                                             ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2.png │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file1.png │
└──────────────────────────────────────────────────────────────────┘
1

organizeit match file://organizeit2/tests/directory/subdir1/ "*" --no-list --limit=5 --invert --by="size" --desc
echo $?
Unmatched
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━┓
┃ Path                                                             ┃ Size ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━┩
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2.txt │ 7    │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2.md  │ 6    │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2     │ 5    │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file1.txt │ 3    │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file1.md  │ 2    │
└──────────────────────────────────────────────────────────────────┴──────┘
1

organizeit rematch file://organizeit2/tests/directory/subdir1/ ".*" --no-list --limit=5 --invert --by="size" --desc
echo $?
Unmatched
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━┓
┃ Path                                                             ┃ Size ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━┩
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2.txt │ 7    │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2.md  │ 6    │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2     │ 5    │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file1.txt │ 3    │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file1.md  │ 2    │
└──────────────────────────────────────────────────────────────────┴──────┘
1

organizeit match file://organizeit2/tests/directory/subdir1/ "*" --no-list --limit=2 --leaves=7 --invert --desc --by="age"
echo $?
Unmatched
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Path                                                             ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2.txt │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2.md  │
└──────────────────────────────────────────────────────────────────┘
1

organizeit rematch file://organizeit2/tests/directory/subdir1/ ".*" --no-list --limit=2 --leaves=7 --invert --desc --by="age"
echo $?
Unmatched
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Path                                                             ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2.txt │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2.md  │
└──────────────────────────────────────────────────────────────────┘
1

organizeit match file://organizeit2/tests/directory/subdir1/ "*" --no-list --limit=3 --invert --by="age"
echo $?
Unmatched
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Path                                                              ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ file://organizeit2/organizeit2/tests/directory/subdir1/file1.png  │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2.png  │
│ file://organizeit2/organizeit2/tests/directory/subdir1/subsubdir1 │
└───────────────────────────────────────────────────────────────────┘
1

organizeit rematch file://organizeit2/tests/directory/subdir1/ ".*" --no-list --limit=3 --invert --by="age"
echo $?
Unmatched
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Path                                                              ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ file://organizeit2/organizeit2/tests/directory/subdir1/file1.png  │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2.png  │
│ file://organizeit2/organizeit2/tests/directory/subdir1/subsubdir1 │
└───────────────────────────────────────────────────────────────────┘
1

organizeit match file://organizeit2/tests/directory/subdir1/ "*" --no-list --leaves=8 --invert --by="age"
echo $?
Unmatched
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Path                                                             ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ file://organizeit2/organizeit2/tests/directory/subdir1/file1.png │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2.png │
└──────────────────────────────────────────────────────────────────┘
1

organizeit rematch file://organizeit2/tests/directory/subdir1/ ".*" --no-list --leaves=8 --invert --by="age"
echo $?
Unmatched
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Path                                                             ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2.png │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file1.png │
└──────────────────────────────────────────────────────────────────┘
1

organizeit rematch file://organizeit2/tests/directory/subdir1/ ".*" --no-list --limit=5 --invert --by="size" --desc --op="touch" --dry-run
echo $?
Unmatched
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━┓
┃ Path                                                             ┃ Size ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━┩
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2.txt │ 7    │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2.md  │ 6    │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2     │ 5    │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file1.txt │ 3    │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file1.md  │ 2    │
└──────────────────────────────────────────────────────────────────┴──────┘
touch organizeit2/organizeit2/tests/directory/subdir1/file2.txt
touch organizeit2/organizeit2/tests/directory/subdir1/file2.md
touch organizeit2/organizeit2/tests/directory/subdir1/file2
touch organizeit2/organizeit2/tests/directory/subdir1/file1.txt
touch organizeit2/organizeit2/tests/directory/subdir1/file1.md
1

organizeit rematch file://organizeit2/tests/directory/subdir1/ ".*" --no-list --limit=5 --invert --by="size" --desc --op="rm" --dry-run
echo $?
Unmatched
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━┓
┃ Path                                                             ┃ Size ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━┩
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2.txt │ 7    │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2.md  │ 6    │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file2     │ 5    │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file1.txt │ 3    │
│ file://organizeit2/organizeit2/tests/directory/subdir1/file1.md  │ 2    │
└──────────────────────────────────────────────────────────────────┴──────┘
rm organizeit2/organizeit2/tests/directory/subdir1/file2.txt
rm organizeit2/organizeit2/tests/directory/subdir1/file2.md
rm organizeit2/organizeit2/tests/directory/subdir1/file2
rm organizeit2/organizeit2/tests/directory/subdir1/file1.txt
rm organizeit2/organizeit2/tests/directory/subdir1/file1.md
1

Note

This library was generated using copier from the Base Python Project Template repository

About

This morning at dawn, you will take a new form - that of a fleshless, chattering skeleton when Zorp the Surveyor arrives and burns your flesh off with his volcano mouth

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •  

Languages