Top Related Projects
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:
-
Install rmlint on your system:
# On Ubuntu/Debian sudo apt-get install rmlint # On macOS with Homebrew brew install rmlint
-
Run a basic scan to find duplicates:
rmlint /path/to/directory
-
Generate a shell script to remove duplicates:
rmlint --types=duplicates /path/to/directory -o sh:rmlint.sh
-
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
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.
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 designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
======
.. 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.
Top Related Projects
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot