Filter, Sort & Delete Duplicate Files Recursively

Overview

Deduplicator

Find, Sort, Filter & Delete duplicate files

Usage

Usage: deduplicator [OPTIONS] [scan_dir_path]

Arguments:
  [scan_dir_path]  Run Deduplicator on dir different from pwd (e.g., ~/Pictures )

Options:
  -t, --types <TYPES>          Filetypes to deduplicate [default = all]
  -i, --interactive            Delete files interactively
  -s, --min-size <MIN_SIZE>    Minimum filesize of duplicates to scan (e.g., 100B/1K/2M/3G/4T) [default: 1b]
  -d, --max-depth <MAX_DEPTH>  Max Depth to scan while looking for duplicates
      --min-depth <MIN_DEPTH>  Min Depth to scan while looking for duplicates
  -f, --follow-links           Follow links while scanning directories
  -h, --help                   Print help information
  -V, --version                Print version information

Examples

# Scan for duplicates recursively from the current dir, only look for png, jpg & pdf file types & interactively delete files
deduplicator -t pdf,jpg,png -i

# Scan for duplicates recursively from the ~/Pictures dir, only look for png, jpeg, jpg & pdf file types & interactively delete files
deduplicator ~/Pictures/ -t png,jpeg,jpg,pdf -i

# Scan for duplicates in the ~/Pictures without recursing into subdirectories
deduplicator ~/Pictures --max-depth 0

# look for duplicates in the ~/.config directory while also recursing into symbolic link paths
deduplicator ~/.config --follow-links

# scan for duplicates that are greater than 100mb in the ~/Media directory
deduplicator ~/Media --min-size 100mb

Installation

Cargo Install

Stable

$ cargo install deduplicator

Nightly

if you'd like to install with nightly features, you can use

$ cargo install --git https://github.com/sreedevk/deduplicator

Please note that if you use a version manager to install rust (like asdf), you need to reshim (asdf reshim rust).

Linux (Pre-built Binary)

you can download the pre-built binary from the Releases page. download the deduplicator-x86_64-unknown-linux-gnu.tar.gz for linux. Once you have the tarball file with the executable, you can follow these steps to install:

$ tar -zxvf deduplicator-x86_64-unknown-linux-gnu.tar.gz
$ sudo mv deduplicator /usr/bin/

Mac OS (Pre-built Binary)

you can download the pre-build binary from the Releases page. download the deduplicator-x86_64-apple-darwin.tar.gz tarball for mac os. Once you have the tarball file with the executable, you can follow these steps to install:

$ tar -zxvf deduplicator-x86_64-unknown-linux-gnu.tar.gz
$ sudo mv deduplicator /usr/bin/

Windows (Pre-built Binary)

you can download the pre-build binary from the Releases page. download the deduplicator-x86_64-pc-windows-msvc.zip zip file for windows. unzip the zip file & move the deduplicator.exe to a location in the PATH system environment variable.

Note: If you Run into an msvc error, please install MSCV from here

Performance

Deduplicator uses size comparison and fxhash (a non non-cryptographic hashing algo) to quickly scan through large number of files to find duplicates. its also highly parallel (uses rayon and dashmap). I was able to scan through 120GB of files (Videos, PDFs, Images) in ~300ms. checkout the benchmarks

benchmarks

Command Dirsize Mean [ms] Min [ms] Max [ms] Relative
deduplicator --dir ~/Data/tmp (~120G) 27.5 ± 1.0 26.0 32.1 1.70 ± 0.09
deduplicator --dir ~/Data/books (~8.6G) 21.8 ± 0.7 20.5 24.4 1.35 ± 0.07
deduplicator --dir ~/Data/books --min-size 10M (~8.6G) 16.1 ± 0.6 14.9 18.8 1.00
deduplicator --dir ~/Data/ --types pdf,jpg,png,jpeg (~290G) 1857.4 ± 24.5 1817.0 1895.5 115.07 ± 4.64
  • The last entry is lower because of the number of files deduplicator had to go through (~660895 Files). The average size of the files rarely affect the performance of deduplicator.

These benchmarks were run using hyperfine. Here are the specs of the machine used to benchmark deduplicator:

OS: Arch Linux x86_64 
Host: Precision 5540
Kernel: 5.15.89-1-lts 
Uptime: 4 hours, 44 mins 
Shell: zsh 5.9                        
Terminal: kitty 
CPU: Intel i9-9880H (16) @ 4.800GHz 
GPU: NVIDIA Quadro T2000 Mobile / Max-Q 
GPU: Intel CoffeeLake-H GT2 [UHD Graphics 630] 
Memory: 31731MiB (~32GiB)

Screenshots

Comments
  • Crash while searching

    Crash while searching

    Probably issue in cyrillic characters in path

    thread 'main' panicked at 'byte index 11 is not a char boundary; it is inside 'с' (bytes 10..12) of `/фото с iPhone/IMG_6740 1.JPG`', src/output.rs:12:14
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    
    opened by wa1kb0y 6
  • [Feature] Use Globwalker Builder to add --max-depth & --follow-links options

    [Feature] Use Globwalker Builder to add --max-depth & --follow-links options

    Is your feature request related to a problem? Please describe. Currently, there is no fine control over the directory scanning process. Using the Globwalk Builder, we can add options like --max-depth & --follow-links to offer more control over the directory scanning process.

    Describe the solution you'd like https://docs.rs/globwalk/latest/globwalk/#advanced-globbing

    cc: @beeb adding this issue here to discuss options

    opened by sreedevk 4
  • Sort table results by ascending file size

    Sort table results by ascending file size

    This change makes the result table sorted by ascending size, allowing the user to immediately see the largest file at the bottom of the (potentially large) output.

    opened by beeb 4
  • Panic when scanning

    Panic when scanning

    The fact that there are a lot of unwrap's in the scanner code makes it so that the app panics when I run it against my home directory:

    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }', [...]/deduplicator-0.0.3/src/scanner.rs:52:65
    stack backtrace:
       0: rust_begin_unwind
                 at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:575:5
       1: core::panicking::panic_fmt
                 at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/core/src/panicking.rs:65:14
       2: core::result::unwrap_failed
                 at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/core/src/result.rs:1791:5
       3: <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::try_fold
       4: <alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter
       5: rayon::iter::plumbing::Folder::consume_iter
       6: rayon::iter::plumbing::bridge_producer_consumer::helper
       7: <rayon::vec::IntoIter<T> as rayon::iter::IndexedParallelIterator>::with_producer
       8: rayon::iter::extend::<impl rayon::iter::ParallelExtend<T> for alloc::vec::Vec<T>>::par_extend
       9: deduplicator::scanner::duplicates
      10: deduplicator::app::App::init
      11: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
      12: tokio::runtime::park::CachedParkThread::block_on
      13: tokio::runtime::scheduler::multi_thread::MultiThread::block_on
      14: tokio::runtime::runtime::Runtime::block_on
      15: deduplicator::main
    

    Faillible actions (especially against the filesystem) should be properly handled (most likely skipping the affected files during the scan).

    opened by beeb 4
  • Switch to globwalk

    Switch to globwalk

    Not sure if you'll agree to this change, but I was not able to scan my full home directory with deduplicator, probably because it was trying to keep too many open file descriptors. globwalk seems to handle this much better (the default limits the number of open descriptors to a sane value). With this change I was able to scan my full home dir.

    I have not tested it extensively but it seems to work for me, even with the --types argument.

    opened by beeb 3
  • [Bug] Output Printing Slow

    [Bug] Output Printing Slow

    Describe the bug After the scanning is complete, the app hangs for a second before printing the output. This is clearer with large directories.

    ** Runtime Info ** Install Type: [e.g. cargo install] App Version: [e.g. v0.1.1]

    Expected behavior Printing should be fast

    Platform Details (please complete the following information):

    • OS: Arch Linux
    • Terminal Emulator: Kitty
    • Shell: Bash
    help wanted good first issue 
    opened by sreedevk 3
  • [Bug] Excessive Memory Consumption

    [Bug] Excessive Memory Consumption

    Describe the bug The memory usage while scanning a 127 GB directory of PDFs, Images & Videos shot up to 26 GiB from 4.8 GiB (Initial), causing the desktop manager (lightdm) to crash & restart.

    Runtime Info App Arguments: none Install Type: cargo install App Version: 0.0.8

    Expected behavior Reduced Memory Consumption.

    Platform Details (please complete the following information):

    • OS: Arch Linux (Kernel: 5.15.86-1-lts)
    • Terminal Emulator: Kitty
    • Shell: Zshell
    opened by sreedevk 3
  • Idea for better performance

    Idea for better performance

    Just had an idea of how to maybe improve performance. Instead of hashing all files, how about first differentiating them by using the file size (which is unlikely to be identical for two large files that are different) and only relying on the hash when they have the same size?

    opened by beeb 3
  • [feature] to remove duplicates

    [feature] to remove duplicates

    I think its generally expected feature of this tool, it can be interactively like "select file to delete: 1, 2, 3" with some --interactive option or just auto delete first match (keep only last one) with --remove.

    opened by wa1kb0y 3
  • [Feature] Add Pre-Built Binary Download

    [Feature] Add Pre-Built Binary Download

    Is your feature request related to a problem? Please describe. Currently, deduplicator is only installable via cargo (rust's build tool). Need to make pre-built binary download options available to make deduplicator easily accessible to more people.

    Describe the solution you'd like Create workflows to cross compile binaries for the following platforms

    • x86_64
    • AArch64

    Describe alternatives you've considered

    • Distributing through linux package repositories (plans for the future)

    Additional context N/A

    opened by sreedevk 2
  • Error: unable to open database file (code 14)

    Error: unable to open database file (code 14)

    OS: Windows 11 Enterprise OS version: 22000.1335

    When I try to run app, I get an error "Error: unable to open database file (code 14)"

    Example:

    cargo run --release -- --dir=test_data
    warning: unused imports: `Frame`, `Rect`
     --> src\app\ui.rs:5:45
      |
    5 |     layout::{Constraint, Direction, Layout, Rect},
      |                                             ^^^^
    ...
    9 |     Frame, Terminal,
      |     ^^^^^
      |
      = note: `#[warn(unused_imports)]` on by default
    
    warning: unused import: `std::thread`
      --> src\app\mod.rs:14:5
       |
    14 | use std::thread;
       |     ^^^^^^^^^^^
    
    warning: unused import: `std::time::Duration`
      --> src\app\mod.rs:15:5
       |
    15 | use std::time::Duration;
       |     ^^^^^^^^^^^^^^^^^^^
    
    warning: unused imports: `Block`, `Borders`, `Widget`
      --> src\app\mod.rs:18:15
       |
    18 |     widgets::{Block, Borders, Widget},
       |               ^^^^^  ^^^^^^^  ^^^^^^
    
    warning: unused import: `Backend`
     --> src\app\ui.rs:4:15
      |
    4 |     backend::{Backend, CrosstermBackend},
      |               ^^^^^^^
    
    warning: associated function `cleanup` is never used
      --> src\app\mod.rs:39:8
       |
    39 |     fn cleanup(term: &mut Terminal<CrosstermBackend<io::Stdout>>) -> Result<()> {
       |        ^^^^^^^
       |
       = note: `#[warn(dead_code)]` on by default
    
    warning: associated function `render_cycle` is never used
      --> src\app\mod.rs:51:8
       |
    51 |     fn render_cycle(term: &mut Terminal<CrosstermBackend<io::Stdout>>) -> Result<()> {
       |        ^^^^^^^^^^^^
    
    warning: associated function `init_render_loop` is never used
      --> src\app\mod.rs:58:8
       |
    58 |     fn init_render_loop(term: &mut Terminal<CrosstermBackend<io::Stdout>>) -> Result<()> {
       |        ^^^^^^^^^^^^^^^^
    
    warning: associated function `init_terminal` is never used
      --> src\app\mod.rs:69:8
       |
    69 |     fn init_terminal() -> Result<Terminal<CrosstermBackend<io::Stdout>>> {
       |        ^^^^^^^^^^^^^
    
    warning: struct `EventHandler` is never constructed
     --> src\app\event_handler.rs:7:12
      |
    7 | pub struct EventHandler;
      |            ^^^^^^^^^^^^
    
    warning: associated function `init` is never used
      --> src\app\event_handler.rs:10:12
       |
    10 |     pub fn init() -> Result<events::Event> {
       |            ^^^^
    
    warning: associated function `handle_keypress` is never used
      --> src\app\event_handler.rs:21:8
       |
    21 |     fn handle_keypress(keyevent: KeyEvent) -> Result<events::Event> {
       |        ^^^^^^^^^^^^^^^
    
    warning: enum `Event` is never used
     --> src\app\events.rs:1:10
      |
    1 | pub enum Event {
      |          ^^^^^
    
    warning: struct `Ui` is never constructed
      --> src\app\ui.rs:12:12
       |
    12 | pub struct Ui;
       |            ^^
    
    warning: associated function `generate_file_list` is never used
      --> src\app\ui.rs:15:8
       |
    15 |     fn generate_file_list() -> impl Widget {
       |        ^^^^^^^^^^^^^^^^^^
    
    warning: associated function `generate_info_bar` is never used
      --> src\app\ui.rs:27:8
       |
    27 |     fn generate_info_bar() -> impl Widget {
       |        ^^^^^^^^^^^^^^^^^
    
    warning: associated function `generate_file_desc` is never used
      --> src\app\ui.rs:31:8
       |
    31 |     fn generate_file_desc() -> impl Widget {
       |        ^^^^^^^^^^^^^^^^^^
    
    warning: associated function `render_frame` is never used
      --> src\app\ui.rs:35:12
       |
    35 |     pub fn render_frame(term: &mut Terminal<CrosstermBackend<io::Stdout>>) -> Result<()> {
       |            ^^^^^^^^^^^^
    
    warning: `deduplicator` (bin "deduplicator") generated 18 warnings
        Finished release [optimized] target(s) in 0.30s
         Running `target\release\deduplicator.exe --dir=test_data`
    Error: unable to open database file (code 14)
    error: process didn't exit successfully: `target\release\deduplicator.exe --dir=test_data` (exit code: 1)
    

    I tried to install app via cargo, also I tried to build app from source code, but I got the same error.

    How can I fix it?

    opened by FixGN 2
  • [Feature] Add Flag to Exclude Filetypes

    [Feature] Add Flag to Exclude Filetypes

    Is your feature request related to a problem? Please describe. If I don't want to exclude duplicates of a single file type, It's very difficult to do it.

    Describe the solution you'd like Add a --exclude-types / -x to exclude certain file types from being scanned by deduplicator

    opened by sreedevk 0
  • [Feature] Mass Processing Options --keep-latest --keep-oldest

    [Feature] Mass Processing Options --keep-latest --keep-oldest

    Is your feature request related to a problem? Please describe. The Interactive mode allows the deletion of files one duplicate group at a time. When working with millions of files, this can be tedious.

    Describe the solution you'd like In order to automate this process by using deduplicator in scripts, adding options like --keep-latest --keep-oldest can help.

    Describe alternatives you've considered adding custom config files that can parse a DSL to decide which files to keep [idea for the future]

    opened by sreedevk 0
  • Test Deduplicator on Windows OS

    Test Deduplicator on Windows OS

    I don't own or have access to a windows machine. If anybody does have access to a windows machine, please help out by testing deduplicator on windows.

    Required Information:

    1. Benchmarks - Speed & Memory Efficiency
    2. Bug Reports
    help wanted good first issue 
    opened by sreedevk 0
  • [Feature] Add Unit Tests

    [Feature] Add Unit Tests

    Is your feature request related to a problem? Please describe. In order to avoid fixed issues from resurfacing, unit tests need to be added for each mod.

    Describe the solution you'd like Add Tests for:

    • hashing
    • file scanning
    • finding duplicates by size
    • finding duplicates by hashes
    • printing output (integration tests)
    • interactive mode (integration tests)

    Describe alternatives you've considered N/A

    Additional context As the application is going through major changes, it's essential to make sure that it doesn't break.

    opened by sreedevk 0
Releases(0.1.5)
  • 0.1.5(Jan 26, 2023)

    What's Changed

    • make --dir a positional argument by @sreedevk in https://github.com/sreedevk/deduplicator/pull/45
    • [Feature] Add scan control args by @sreedevk in https://github.com/sreedevk/deduplicator/pull/46
    • Version 0.1.5 by @sreedevk in https://github.com/sreedevk/deduplicator/pull/47

    Full Changelog: https://github.com/sreedevk/deduplicator/compare/0.1.4...0.1.5

    Source code(tar.gz)
    Source code(zip)
    deduplicator-x86_64-apple-darwin.tar.gz(1.07 MB)
    deduplicator-x86_64-pc-windows-msvc.zip(1.04 MB)
    deduplicator-x86_64-unknown-linux-gnu.tar.gz(1.18 MB)
  • 0.1.4(Jan 23, 2023)

    What's Changed

    • Switch to globwalk by @beeb in https://github.com/sreedevk/deduplicator/pull/37
    • refactor: use globwalk builder pattern by @beeb in https://github.com/sreedevk/deduplicator/pull/41
    • Added more progress bars to avoid blank states by @sreedevk in https://github.com/sreedevk/deduplicator/pull/42
    • Version 0.1.4 by @sreedevk in https://github.com/sreedevk/deduplicator/pull/38

    Full Changelog: https://github.com/sreedevk/deduplicator/compare/0.1.3...0.1.4

    Source code(tar.gz)
    Source code(zip)
    deduplicator-x86_64-apple-darwin.tar.gz(1.06 MB)
    deduplicator-x86_64-pc-windows-msvc.zip(1.03 MB)
    deduplicator-x86_64-unknown-linux-gnu.tar.gz(1.18 MB)
  • 0.1.3(Jan 23, 2023)

    What's Changed

    • Performance/glob improvements by @sreedevk in https://github.com/sreedevk/deduplicator/pull/32
    • build(deps): bump tokio from 1.23.0 to 1.23.1 by @dependabot in https://github.com/sreedevk/deduplicator/pull/35
    • Version 0.1.3 by @sreedevk in https://github.com/sreedevk/deduplicator/pull/33

    New Contributors

    • @dependabot made their first contribution in https://github.com/sreedevk/deduplicator/pull/35

    Full Changelog: https://github.com/sreedevk/deduplicator/compare/0.1.2...0.1.3

    Source code(tar.gz)
    Source code(zip)
    deduplicator-x86_64-apple-darwin.tar.gz(710.01 KB)
    deduplicator-x86_64-pc-windows-msvc.zip(668.41 KB)
    deduplicator-x86_64-unknown-linux-gnu.tar.gz(785.48 KB)
  • 0.1.2(Jan 19, 2023)

    What's Changed

    • Min Size Filter Feature by @sreedevk in https://github.com/sreedevk/deduplicator/pull/26
    • feat(cli): add value hint for --dir argument by @beeb in https://github.com/sreedevk/deduplicator/pull/29
    • Sort table results by ascending file size by @beeb in https://github.com/sreedevk/deduplicator/pull/27
    • Version 0.1.2 by @sreedevk in https://github.com/sreedevk/deduplicator/pull/28

    Full Changelog: https://github.com/sreedevk/deduplicator/compare/0.1.1...0.1.2

    Source code(tar.gz)
    Source code(zip)
  • 0.1.1(Jan 18, 2023)

    What's Changed

    • Code Optimizations by @sreedevk in https://github.com/sreedevk/deduplicator/pull/21
    • Added Incremental hashing for files > 100MB
    • Added MMap file read for files > 100 MB
    • First checks for duplicates by File size & then the duplicate found are processed through hashing
    • Remove SQLite & Caching options
    • Removed Unneeded Cargo dependencies
    • output print performance improvements
    • Performance Improvements by @sreedevk in https://github.com/sreedevk/deduplicator/pull/23
    • Version 0.1.1 by @sreedevk in https://github.com/sreedevk/deduplicator/pull/22

    Full Changelog: https://github.com/sreedevk/deduplicator/compare/0.0.9...0.1.1

    Source code(tar.gz)
    Source code(zip)
  • 0.0.9(Jan 13, 2023)

    What's Changed

    • Fix of "thread 'main' panicked at 'range start index 130 out of range… by @ghfghfg23 in https://github.com/sreedevk/deduplicator/pull/17
    • Version 0.0.9 by @sreedevk in https://github.com/sreedevk/deduplicator/pull/20

    New Contributors

    • @ghfghfg23 made their first contribution in https://github.com/sreedevk/deduplicator/pull/17

    Full Changelog: https://github.com/sreedevk/deduplicator/compare/0.0.8...0.0.9

    Source code(tar.gz)
    Source code(zip)
  • 0.0.8(Jan 12, 2023)

    What's Changed

    • [Feature] Add Progress Bar When Indexing Files by @sreedevk in https://github.com/sreedevk/deduplicator/pull/18

    Full Changelog: https://github.com/sreedevk/deduplicator/compare/0.0.7...0.0.8

    Source code(tar.gz)
    Source code(zip)
  • 0.0.7(Jan 11, 2023)

    What's Changed

    • Interactive mode by @sreedevk in https://github.com/sreedevk/deduplicator/pull/16

    Full Changelog: https://github.com/sreedevk/deduplicator/compare/0.0.6...0.0.7

    Source code(tar.gz)
    Source code(zip)
  • 0.0.6(Jan 10, 2023)

    What's Changed

    • Better Display For Duplicates by @sreedevk in https://github.com/sreedevk/deduplicator/pull/14

    _048

    Full Changelog: https://github.com/sreedevk/deduplicator/compare/0.0.5...0.0.6

    Source code(tar.gz)
    Source code(zip)
  • 0.0.5(Jan 9, 2023)

    What's Changed

    • Fix Temporary File Path #6 by @dhruvasagar in https://github.com/sreedevk/deduplicator/pull/12
    • Fix some more unhandled errors by @beeb in https://github.com/sreedevk/deduplicator/pull/13

    New Contributors

    • @dhruvasagar made their first contribution in https://github.com/sreedevk/deduplicator/pull/12

    Full Changelog: https://github.com/sreedevk/deduplicator/compare/0.0.4...0.0.5

    Source code(tar.gz)
    Source code(zip)
  • 0.0.4(Jan 8, 2023)

    What's Changed

    • Refactor output.rs by @beeb in https://github.com/sreedevk/deduplicator/pull/10
    • Refactor scanner by @beeb in https://github.com/sreedevk/deduplicator/pull/9

    New Contributors

    • @beeb made their first contribution in https://github.com/sreedevk/deduplicator/pull/10

    Full Changelog: https://github.com/sreedevk/deduplicator/compare/0.0.3...0.0.4

    Source code(tar.gz)
    Source code(zip)
  • 0.0.3(Jan 7, 2023)

  • 0.0.2(Jan 5, 2023)

Owner
Sreedev Kodichath
Senior Software Engineer. Radio Amateur (United States: KD2ZWB | India: VU2JWE). Electronics Enthusiast. GPG Key ID: 0xF2D006638E49CD45
Sreedev Kodichath
Yet another sort crate, porting Golang sort package to Rust.

IndexSort IndexSort Yet another sort crate (in place), porting Golang's standard sort package to Rust. Installation [dependencies] indexsort = "0.1.0"

Al Liu 4 Sep 28, 2022
A (aspiring to be fast) tool to find duplicate files.

find-duplicates A decenly fast tool to find duplicate files. Handles symbolic and hard links and treats them seperately to duplicates. Quickstart Inst

dylan 1 Jan 21, 2022
CLI tool to find duplicate files based on their hashes.

Dupper Dupper is a CLI tool that helps you identify duplicate files based on their hashes (using the Seahash hashing algorithm). Installation You can

Rubén J.R. 4 Dec 27, 2022
A Rust based simple cli to delete all files included in `.gitignore` file from your repo

clean-local A simple CLI to remove all the files and folders included in the .gitignore file. Written in RUST Supports glob and wildcard paths in .git

Vilva Athiban P B 5 Jul 8, 2023
Inspect dynamic dependencies of Mach-O binaries recursively

dylibtree dylibtree is a tool for inspecting the dynamic dependencies of a Mach-O binary recursively. It can be useful to understand what library load

Keith Smiley 53 Jul 3, 2023
⚡ A Blazing fast alternative to the stock windows folder delete function!

Turbo Delete A blazing fast alternative to the default Windows delete. Turbodelete is a blazing fast alternative to the default Windows delete functio

Tejas Ravishankar 165 Dec 4, 2022
Simple CLI to (add, delete, update, create) i18n translation file 🔤 🦀

, Inrs Simple CLI to (add, delete, update, create) i18n translation file Copyright (C) 2020-2022 TheAwiteb https://github.com/TheAwiteb/inrs This pr

TheAwiteb 4 Oct 4, 2022
Delete useless GitHub repositories easily.

delete-unused-repo Delete useless GitHub repositories easily. Demo del-unused-repo.mp4 Usage Warning You are responsible for your own actions, this is

null 2 Aug 9, 2022
Zenith - sort of like top or htop but with zoom-able charts, CPU, GPU, network, and disk usage

Zenith - sort of like top or htop but with zoom-able charts, CPU, GPU, network, and disk usage

Benjamin Vaisvil 1.6k Jan 4, 2023
Human numeric sorting program — does what `sort -h` is supposed to do!

hns — Human Numeric Sort v0.1.0 (⏫︎2022-09-20) © 2022 Fredrick R. Brennan and hns Authors Apache 2.0 licensed, see LICENSE. man page Packages hns_0.1.

Fredrick Brennan 7 Sep 25, 2022
Alexander Mongus is a state-of-the-art filter to sneak amogus characters in pictures

A. Mongus Go to: http://www.lortex.org/amogu/ ??? This is a client-side, Webassembly-based filter to hide amongus characters in your images. Example:

Lucas Pluvinage 3 Apr 16, 2022
Yet Another Kalman Filter Implementation. As well as Lie Theory (Lie group and algebra) on SE(3). [no_std] is supported by default.

yakf - Yet Another Kalman Filter Yet Another Kalman Filter Implementation, as well as, Lie Theory (Lie group, algebra, vector) on SO(3), SE(3), SO(2),

null 7 Dec 1, 2022
A fast, simple and lightweight Bloom filter library for Python, fully implemented in Rust.

rBloom A fast, simple and lightweight Bloom filter library for Python, fully implemented in Rust. It's designed to be as pythonic as possible, mimicki

Kenan Hanke 91 Feb 4, 2023
A tool to filter sites in a FASTA-format whole-genome pseudo-alignment

Core-SNP-filter This is a tool to filter sites (i.e. columns) in a FASTA-format whole-genome pseudo-alignment based on: Whether the site contains vari

Ryan Wick 15 Apr 2, 2023
Rust crate for interacting with the Windows Packet Filter driver.

NDISAPI-RS NDISAPI-RS is a Rust crate for interacting with the Windows Packet Filter driver. It provides an easy-to-use, safe, and efficient interface

Vadim Smirnov 6 Jun 15, 2023
The fastest bloom filter in Rust. No accuracy compromises. Use any hasher.

b100m-filter The fastest bloom filter in Rust. No accuracy compromises. Use any hasher. Usage # Cargo.toml [dependencies] b100m-filter = "0.3.0" use b

null 4 Nov 19, 2023
A tool that allow you to run SQL-like query on local files instead of database files using the GitQL SDK.

FileQL - File Query Language FileQL is a tool that allow you to run SQL-like query on local files instead of database files using the GitQL SDK. Sampl

Amr Hesham 39 Mar 12, 2024
CLI Tool for tagging and organizing files by tags.

wutag ?? ??️ CLI tool for tagging and organizing files by tags. Install If you use arch Linux and have AUR repositories set up you can use your favour

Wojciech Kępka 32 Dec 6, 2022
mdBook is a utility to create modern online books from Markdown files.

Create book from markdown files. Like Gitbook but implemented in Rust

The Rust Programming Language 11.6k Jan 4, 2023