moove - 🚚 Manipulate file names and locations

moove is a command line tool for renaming and moving files and directories using a text editor.
🎨 Features \|
🚀 Usage \|
📥 Getting started \|
💙 Contributing \|
🌏 License
Features 🎨
- Displays file and directory names like
ls
in a text editor,
and renames or moves them exactly as you edit them.
- A pre-compiled single executable without any dependencies.
Thanks 💖 to Zig and musl libc.
- Supports Linux, Mac, and Windows.
- Supports wildcard patterns including Windows.
Caveats ⚠
- Given paths have to be convertible to UTF-8.
- Collisions are detected as much as possible, but not perfectly.
Does not verify all paths such as hard links and symbolic links.
- Operations are validated case-sensitively whatever the platform is.
Usage 🚀
```txt
Usage: moove [OPTIONS] [PATHS]...
Arguments:
[PATHS]... Paths or wildcard patterns to move
Options:
-v, --verbose Verbose output
-s, --sort Sort in natural order
-a, --absolute Treat as absolute paths
-d, --directory Directories themselves, not their contents
-w, --with-hidden Include hidden files
-e, --exclude-pattern Exclude regular expression pattern
-c, --copy Copy without moving
-u, --dry-run Dry-run
-o, --oops Abort in case of collision (prompt as default)
-q, --quiet No output to stdout/strerr even if error
-h, --help Print help
-V, --version Print version
```
- Displays file and directory names like
ls
in a text editor.
- You can edit the list as you want to operate. The order of lines corresponds to the original one. Empty lines will be ignored.
- Operations are canceled if you close the editor without saving.
- If a line starts with
//
, the file will be removed regardless modification of the remaining part of the line.
- Intermediate directories will be created if you modify its ancestor directories.
- In case of line number change or collision, asks whether to re-edit or abort. Aborts without asking if '--oops' is specified.
Configuration 🎚
- Default command line options can be specified by environment variable
MOOVE_OPTIONS
.
- Default editor is searched in following order.
- environment variable
VISUAL
- environment variable
EDITOR
- hardcoded lists
- platform-specific generic file openers
Getting Started 📥
Pre-compiled binaries
Install by cargo
sh
cargo install moove
Contributing 💙
Followings are used to build.
Setup building environment 🪜
- Install Zig according to the Zig document.
- Run following commands.
sh
cargo install cargo-make
cargo make setup
Testing and Building 🔨
To test,
txt
cargo make test
To build binaries for release,
txt
cargo make
Pre-compiled binaries will be in the directory dist
.
⚠ Binaries does not have execute permission in case of windows.
TODOs ✅
- Add demos to README
- Package for various platforms
- Overwrite option
- Exclude .gitignore option
- Recursive option
- Maximum depth option
- Depth option
- Ignore case in case of Windows
- Log and undo
License 🌏
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.
© 2023 Urin