Convert Figma logo to code with AI

sahib logormlint

Extremely fast tool to remove duplicates and other lint from your filesystem

1,903
131
1,903
120

Top Related Projects

2,469

FDUPES is a program for identifying or deleting duplicate files residing within specified directories.

19,293

Multi functional app to find duplicates, empty folders, similar images etc.

Quick Overview

rmlint is a command-line tool and library designed to find and remove duplicate files, empty directories, and other space-wasting artifacts on your file system. It's fast, thorough, and offers various output formats and actions to handle the detected issues.

Pros

  • High performance due to its multi-threaded design and efficient algorithms
  • Versatile output options, including JSON, CSV, and pretty-printed formats
  • Supports multiple duplicate detection methods, including file content, name, and size
  • Offers both a command-line interface and a C library for integration into other projects

Cons

  • Primarily designed for Unix-like systems, with limited Windows support
  • Complex command-line options may be overwhelming for casual users
  • Potential for data loss if not used carefully, especially with automatic removal options
  • Limited GUI options, mainly relying on command-line interface

Getting Started

To get started with rmlint, follow these steps:

  1. Install rmlint on your system:

    # On Ubuntu/Debian
    sudo apt-get install rmlint
    
    # On macOS with Homebrew
    brew install rmlint
    
  2. Run a basic scan to find duplicates:

    rmlint /path/to/directory
    
  3. Generate a shell script to remove duplicates:

    rmlint --types=duplicates /path/to/directory -o sh:rmlint.sh
    
  4. Review and execute the generated script:

    less rmlint.sh
    sh rmlint.sh
    

Remember to always review the generated script and backup important data before removing duplicates.

Competitor Comparisons

2,469

FDUPES is a program for identifying or deleting duplicate files residing within specified directories.

Pros of fdupes

  • Simpler and more lightweight, focusing solely on finding and managing duplicate files
  • Easier to use for basic duplicate file detection tasks
  • Has been around longer and may be more stable

Cons of fdupes

  • Limited functionality compared to rmlint's broader feature set
  • Lacks advanced options for handling hard links and other file system intricacies
  • Does not offer a graphical user interface option

Code Comparison

fdupes:

static void filelist_add(const char *path, dev_t device, ino_t inode, off_t size, time_t mtime)
{
  file_t *newfile;
  newfile = (file_t*) malloc(sizeof(file_t));
  if (newfile == NULL) {
    errormsg("out of memory");
    exit(1);
  }

rmlint:

static RmFile *rm_file_new(const char *path, RmStat *statp, RmLintType type)
{
    RmFile *file = g_slice_new0(RmFile);
    file->path = g_strdup(path);
    file->inode = statp->st_ino;
    file->dev = statp->st_dev;
    file->lint_type = type;

Both projects use C for their core functionality, but rmlint's codebase appears more modern and structured. fdupes uses traditional malloc for memory allocation, while rmlint utilizes GLib's memory management functions.

19,293

Multi functional app to find duplicates, empty folders, similar images etc.

Pros of czkawka

  • Written in Rust, offering better performance and memory safety
  • More actively maintained with frequent updates
  • Supports a wider range of file types and search criteria

Cons of czkawka

  • Less mature project with potentially more bugs
  • Lacks some advanced features present in rmlint (e.g., handling of hardlinks)

Code Comparison

rmlint (C):

static int rm_cmd_main(RmSession *session) {
    RmCfg *cfg = session->cfg;
    if(rm_cmd_parse_args(session) == EXIT_FAILURE) {
        return EXIT_FAILURE;
    }
    return rm_cmd_run(session);
}

czkawka (Rust):

fn main() {
    let mut gui_data = GuiData::new();
    let app = gui_data.create_app();
    let native_options = eframe::NativeOptions::default();
    eframe::run_native(Box::new(app), native_options);
}

Both projects aim to find and remove duplicate files, but they differ in implementation language and approach. rmlint is a more established project with a focus on command-line usage, while czkawka offers a GUI and is built with modern Rust features. The code snippets show the entry points for both applications, highlighting the different languages and structures used.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

======

.. image:: https://raw.githubusercontent.com/sahib/rmlint/develop/docs/_static/logo.png :align: center

rmlint finds space waste and other broken things on your filesystem and offers to remove it.

.. image:: https://readthedocs.org/projects/rmlint/badge/?version=latest :target: http://rmlint.rtfd.org

.. image:: https://img.shields.io/travis/sahib/rmlint/develop.svg?style=flat :target: https://travis-ci.org/sahib/rmlint

.. image:: https://img.shields.io/github/issues/sahib/rmlint.svg?style=flat :target: https://github.com/sahib/rmlint/issues

.. image:: https://img.shields.io/github/release/sahib/rmlint.svg?style=flat :target: https://github.com/sahib/rmlint/releases

.. image:: https://img.shields.io/github/downloads/sahib/rmlint/latest/total.svg :target: https://github.com/sahib/rmlint/releases/latest

.. image:: http://img.shields.io/badge/license-GPLv3-4AC51C.svg?style=flat :target: https://www.gnu.org/licenses/quick-guide-gplv3.html.en

.. image:: https://badges.gitter.im/rmlint/community.svg :target: https://gitter.im/rmlint/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge

Features:

Finds…

  • …Duplicate Files and duplicate directories.
  • …Nonstripped binaries (i.e. binaries with debug symbols)
  • …Broken symbolic links.
  • …Empty files and directories.
  • …Files with broken user or/and group ID.

Differences to other duplicate finders:

  • Extremely fast (no exaggeration, we promise!)
  • Paranoia mode for those who do not trust hashsums.
  • Many output formats.
  • No interactivity.
  • Search for files only newer than a certain mtime.
  • Many ways to handle duplicates.
  • Caching and replaying.
  • btrfs support.
  • ...

It runs and compiles under most Unices, including Linux, FreeBSD and Darwin. The main target is Linux though, some optimisations might not be available elsewhere.

.. image:: https://raw.githubusercontent.com/sahib/rmlint/develop/docs/_static/screenshot.png :align: center

INSTALLATION

Chances are that you might have rmlint already as readily made package in your favourite distribution. If not, you might consider compiling it from source <http://rmlint.readthedocs.org/en/latest/install.html>_.

DOCUMENTATION

Detailed documentation is available on:

http://rmlint.rtfd.org

Most features you'll ever need are covered in the tutorial:

http://rmlint.rtfd.org/en/latest/tutorial.html

An online version of the manpage is available at:

http://rmlint.rtfd.org/en/latest/rmlint.1.html

Sometimes we can be reached via IRC: #rmlint on irc.freenode.net.

BUGS

If you found bugs, having trouble running rmlint or want to suggest new features please read this <http://rmlint.readthedocs.org/en/latest/developers.html>_.

Also read the BUGS <http://rmlint.readthedocs.org/en/latest/rmlint.1.html#bugs>_ section of the manpage <http://rmlint.rtfd.org/en/latest/rmlint.1.html>_ to find out how to provide good debug information.

AUTHORS

Here's a list of developers to blame:

=================================== ============================= =========================================== Christopher Pahl https://github.com/sahib 2010-2017 Daniel Thomas https://github.com/SeeSpotRun 2014-2017 Cebtenzzre https://github.com/Cebtenzzre 2021-2023 =================================== ============================= ===========================================

There are some other people that helped us of course. Please see the AUTHORS distributed along rmlint.

LICENSE

rmlint is licensed under the conditions of the GPLv3 <https://www.gnu.org/licenses/quick-guide-gplv3.html.en>. See the COPYING <https://raw.githubusercontent.com/sahib/rmlint/master/COPYING> file distributed along the source for details.