rmlint (with examples)
Check directories for duplicated, empty and broken files:
rmlint path/to/directory1 path/to/directory2 ...
Motivation: This command is useful for finding duplicated, empty, and broken files in specified directories. It helps identify unnecessary files that are taking up disk space or files that may be corrupted and need to be fixed or removed.
Explanation:
path/to/directory1 path/to/directory2 ...
: Specifies the directories to be checked for duplicated, empty, and broken files.
Example Output:
[Empty file]
path/to/directory1/empty_file.txt
[Duplicated files]
path/to/directory1/duplicated_file.txt
path/to/directory2/duplicated_file.txt
[Broken files]
path/to/directory1/broken_file.txt
Check for space wasters, preferably keeping files in tagged directories:
rmlint path/to/directory // path/to/original_directory
Motivation:
This command helps find space-wasting files that are duplicated in multiple directories. By using the double slash (//
), it allows users to specify that files in tagged directories should be kept while removing duplicates from other directories.
Explanation:
path/to/directory
: Specifies the directory to be checked for space-wasting files.//
: Separates the directory to be checked from the original directory.path/to/original_directory
: Specifies the original directory where tagged directories reside.
Example Output:
[Space-wasting files]
path/to/directory/space_waster.txt
Check for space wasters, keeping everything in the untagged directories:
rmlint --keep-all-untagged path/to/directory // path/to/original_directory
Motivation: This command is similar to the previous one but keeps all files in the untagged directories, removing duplicates only from the tagged directories. It can be useful when you want to declutter specific directories while keeping everything intact in the remaining directories.
Explanation:
--keep-all-untagged
: Instructsrmlint
to keep all files in the untagged directories.path/to/directory
: Specifies the directory to be checked for space-wasting files.//
: Separates the directory to be checked from the original directory.path/to/original_directory
: Specifies the original directory where tagged directories reside.
Example Output:
[Space-wasting files]
path/to/original_directory/tagged_directory/space_waster.txt
Delete duplicate files found by an execution of rmlint
:
./rmlint.sh
Motivation:
After using the rmlint
command to find duplicate files, this command can be used to delete the duplicates that were identified. It helps to free up disk space by removing unnecessary and duplicated files.
Explanation:
./rmlint.sh
: Executes thermlint.sh
script, which automatically deletes duplicate files found by the previous execution ofrmlint
.
Example Output:
Duplicate files deleted.
Find duplicate directory trees:
rmlint --merge-directories path/to/directory
Motivation: This command is useful for finding duplicate directory trees, which are directories with identical subdirectories and files. Identifying duplicate directory trees can help organize the file system and avoid redundancy.
Explanation:
--merge-directories
: Instructsrmlint
to find duplicate directory trees.path/to/directory
: Specifies the directory to be checked for duplicate directory trees.
Example Output:
[Duplicate directory tree]
path/to/directory1
path/to/directory2
Mark files at lower path [d]epth as originals, on tie choose shorter [l]ength:
rmlint --rank-by=dl path/to/directory
Motivation: This command is useful for marking files at a lower path depth as originals when there are duplicates with the same content. It helps preserve the files in directories closer to the root and choose the shortest path length when there is a tie.
Explanation:
--rank-by=dl
: Specifies the ranking criteria for choosing the original files.path/to/directory
: Specifies the directory to be checked for duplicate files.
Example Output:
[Original file]
path/to/directory/original_file.txt
Find only duplicates that have the same filename in addition to the same contents:
rmlint --match-basename path/to/directory
Motivation: This command is useful for finding only duplicates that have the same filename, in addition to having the same content. It helps identify files that may have been mistakenly duplicated with different names.
Explanation:
--match-basename
: Instructsrmlint
to find duplicates with the same filename.path/to/directory
: Specifies the directory to be checked for duplicate files.
Example Output:
[Duplicate files with the same basename]
path/to/directory/duplicate_file1.txt
path/to/directory/duplicate_file2.txt
Find only duplicates that have the same extension in addition to the same contents:
rmlint --match-extension path/to/directory
Motivation: This command is useful for finding only duplicates that have the same file extension, in addition to having the same content. It helps identify files with different names but the same extension that may be unnecessarily duplicated.
Explanation:
--match-extension
: Instructsrmlint
to find duplicates with the same file extension.path/to/directory
: Specifies the directory to be checked for duplicate files.
Example Output:
[Duplicate files with the same extension]
path/to/directory/duplicate_file1.jpg
path/to/directory/duplicate_file2.jpg
In conclusion, the rmlint
command provides various options for finding and managing duplicated, empty, and broken files on a filesystem. By leveraging these different use cases, users can effectively identify and remove unnecessary files, declutter their storage, and organize their file systems more efficiently.