tree

tree - Cross-Platform tree cli written in Rust

GitHub release (latest by date) Rust Crate Build & Test MIT License

tree is an open-source tree command-line application that recursively displays the directory structure of a given path in a tree-like format, inspired by the Unix tree command. It is implemented in Rust and aims to provide a fast and efficient alternative with additional features, especially useful on platforms with no or limited tree cli features. Available for most platforms.

Website: https://peteretelej.github.io/tree/

tree Example

Features

Please feel to open PR requests in case interested in implementing some of the pending features.

Installation

Download Binaries

You can easily download binaries for different platforms from the Releases Page (Windows, MacOS, Linux).

Build from Source

If you have Rust and Cargo installed, you can build the project by running:

git clone https://github.com/peteretelej/tree.git
cd tree
cargo build --release

./target/release/tree -L 2 .
# copy tree binary to a PATH directory

The resulting binary will be located at ./target/release/tree.

Usage

./tree [FLAGS] [OPTIONS] [PATH]

For example

./tree -L 2 .

# -L 2: displays upto 2 levels of recursion

Using as Rust Crate

use rust_tree::tree::{list_directory, options::TreeOptions};

fn main() {
    let path = ".";
    let options = TreeOptions {
        full_path: true,
        no_indent: true,
        ..Default::default()
    };
    list_directory(path, &options).unwrap();
}

Using the bytes_to_human_readable function to print human readable file sizes

use rust_tree::utils::bytes_to_human_readable;
use std::fs;

fn main() {
    let metadata = fs::metadata("my_file.txt").unwrap();
    let size = metadata.len();
    let size_str = bytes_to_human_readable(size);
    println!("File size: {}", size_str);
}

Contributing

Contributions are welcome! If you have any suggestions, feature requests, or bug reports, please feel free to open an issue or submit a pull request on the GitHub repository.

License

MIT