moove - ๐Ÿšš Manipulate file names and locations

May 10, 2026 ยท View on GitHub

Version Downloads from crates.io License

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

๐ŸŽจ Features | ๐Ÿš€ Usage | ๐Ÿ“ฅ Getting started | ๐ŸŒ 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.
  • 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)
  -f, --force                      Overwrite existing files without prompting
  -F, --force-dir                  Overwrite existing directories without prompting (implies --force)
  -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.
  • With --force, an existing destination file (or symlink to a file) is overwritten without prompting. Errors if the destination is a directory or a symlink to a directory.
  • With --force-dir, an existing destination directory (or symlink to a directory) is also overwritten: on move, the destination is removed and replaced; on copy, the contents are merged. Implies --force for file destinations. Errors if the source is a symlink to a directory.

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

Installation

  • Windows

    winget install Urin.moove
    
  • macOS (Homebrew)

    brew install urin/moove/moove
    
  • Fedora COPR

    sudo dnf copr enable urin/moove
    sudo dnf install moove
    
  • cargo

    cargo install moove
    

Alternatives

TODOs โœ…

  • Package for various platforms
  • Exclude .gitignore option
  • 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