12 releases

0.2.8 Nov 5, 2023
0.2.7 Jul 16, 2023
0.2.6 Feb 19, 2023
0.1.0 Feb 2, 2023
0.0.2 Jan 29, 2023

#274 in Filesystem

24 downloads per month

MIT/Apache

335KB
896 lines

moove - 🚚 Manipulate file names and locations

Version Downloads from crates.io Downloads from GitHub License

moove is a command line tool for renaming and moving files and directories using a text editor.

🎨 Features | 🚀 Usage | 📥 Getting started | 💙 Contributing | 🌏 License

Demo

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

Getting Started 📥

Pre-compiled binaries

Install by cargo

cargo install moove

Alternatives

Contributing 💙

Followings are used to build.

Setup development environment 🪜

  1. Install Zig according to the Zig document.
  2. 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

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

Dependencies

~5–15MB
~207K SLoC