Awesome
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.
Usage 🚀
Usage: moove [OPTIONS] [PATHS]...
Arguments:
[PATHS]... Paths or wildcard patterns to move
Options:
-v, --verbose Verbose output
-s, --sort Sort in the natural order
-a, --absolute Treat as absolute paths
-d, --directory Directories themselves, not their contents
-w, --with-hidden Include hidden files
-e, --exclude-pattern <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 after editing 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 and directory (and its contents) will be removed regardless of modification of the remaining part of the line. - Destination directories will be created automatically.
- 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 the environment variable
MOOVE_OPTIONS
. - The default editor is searched in the following order.
- environment variable
VISUAL
- environment variable
EDITOR
- hardcoded lists
- platform-specific generic file openers
- environment variable
Getting Started 📥
Pre-compiled binaries
- moove-apple-aarch64.tar.gz
- moove-apple-x86_64.tar.gz
- moove-linux-aarch64.tar.gz
- moove-linux-x86_64.tar.gz
- moove-windows-x86_64.tar.gz
Install by cargo
cargo install moove
Alternatives
Contributing 💙
Followings are used to build.
- cargo-make as the task runner
- cargo-zigbuild to build for multiple platforms
Setup development environment 🪜
- Install Zig according to the Zig document.
- Run following commands.
cargo install cargo-make
cargo make setup
Testing and Building 🔨
-
To test,
cargo make test
-
To build binaries for release,
cargo make
Pre-compiled binaries will be in the directory
dist
.⚠ Binaries do not have execute permission in case of building on windows.
TODOs ✅
- Package for various platforms
- Overwrite option
- Exclude .gitignore option
- Move to trash instead of removing as the default
- Logging
- Recursive option
- Maximum depth option
- Depth option
License 🌏
Licensed under either of
- Apache License, Version 2.0 or https://www.apache.org/licenses/LICENSE-2.0
- MIT license or https://opensource.org/licenses/MIT
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
<!-- Reference -->