filebyte

A CLI tool to list files and directories with intelligent size formatting, advanced filtering and file analysis. Made in Rust.

← Back to portfolio

Installation

Aliases

You can invoke the tool as any of the following:

  • filebyte — full name
  • fbt — short alias

The commands below work identically with any of these names. For example:

fbt file
filebyte file 

Cargo (Recommended)

cargo install filebyte

Automated installation

  1. Clone the repository:
    git clone https://github.com/execRooted/filebyte.git
    cd filebyte
  2. Run the installer:
    sudo ./install.sh

The installer will automatically:

  • Install Rust if not present
  • Build filebyte with optimizations
  • Install it system-wide to /usr/local/bin/filebyte

Arch Linux (AUR)

paru -S filebyte
# Or any other AUR helper

!!! Note: I don't use Arch Linux. I will publish to the AUR but I won't test the packages. If you find a problem, please don't hesitate to start an issue

Windows

  1. Install Rust from https://www.rust-lang.org/tools/install
  2. Clone the repository and run install.bat:
    git clone https://github.com/execRooted/filebyte.git
    cd filebyte
    .\install.bat

Manual build

git clone https://github.com/execRooted/filebyte.git
cd filebyte
cargo build --release
# Binary will be available at target/release/filebyte

Uninstallation

Automated installation

cd filebyte
sudo ./uninstall.sh

Arch Linux

paru -R filebyte
# Or any AUR helper

Windows

cd filebyte
.\uninstall.bat

Basic Usage

# List files in current directory
filebyte

# List files in specific directory
filebyte /home/user/Documents

# Show directory tree
filebyte --tree

# Analyze a specific file
filebyte -w /path/to/file.txt

# Analyze a directory as a whole
filebyte -w /path/to/directory

Size formatting

# Show permissions and modification dates (default)
filebyte

# Show file sizes in auto-detected units
filebyte -s

# Show file sizes in specific units
filebyte -s mb          # Megabytes
filebyte -s gb          # Gigabytes
filebyte -s b          # Bytes

Advanced Filtering

# Search for specific files
filebyte --search "\.rs$"           # Find Rust files
filebyte --search "config"          # Find files containing "config"

# Exclude files
filebyte --excluding "^\."          # Hide hidden files
filebyte --excluding "temp"         # Exclude temp files

# Combine search and exclusion
filebyte --search "\.txt$" --excluding "old"

# Filter by file size
filebyte --larger-than 10MB         # Files larger than 10MB
filebyte --larger-than 1GB          # Files larger than 1GB
filebyte --larger-than 8 GB         # Space-separated also works
filebyte --larger-than bigfile.bin  # Use another file's size as threshold
filebyte --larger-than 2MiB         # Binary prefix also works
filebyte --larger-than 1GiB         # Binary prefix also works
filebyte --smaller-than 500MB       # Files smaller than 500MB
filebyte --equal-to 10MB            # Files exactly 10MB
filebyte --equal-to 0               # Empty files only

# Filter by file age
filebyte --older-than 30d           # Files older than 30 days
filebyte --older-than 2w            # Files older than 2 weeks
filebyte --older-than 1y            # Files older than 1 year
filebyte --older-than 2024-01-01    # Files older than Jan 1, 2024
filebyte --newer-than 7d            # Files newer than 7 days

# Show only empty files and directories
filebyte --empty
filebyte --empty -r                 # Recursively find empty files/dirs

# Search inside file contents
filebyte --content "hello"          # Show files containing "hello"
filebyte --content "TODO" --r       # Recursively find files with TODO

# Delete or merge duplicate files
filebyte --duplicates --delete-duplicates --force
filebyte --duplicates --merge-duplicates --force

File Analysis

# Show comprehensive analysis for current directory
filebyte -p

# Analyze a specific file in detail
filebyte -f src/main.rs

# Analyze a directory's metadata
filebyte -d /home/user

# Find duplicate files
filebyte --duplicates

# Find true duplicates by content hash (SHA-256, slower but accurate)
filebyte --duplicates --content-dups

# Find true duplicates using MD5 for faster hashing
filebyte --duplicates --content-dups --hash md5

Disk Operations

# List all disks
filebyte --disk list

# Analyze specific disk
filebyte --disk /dev/sda1

# Disk info with custom size units
filebyte --disk list --size gb

Sorting & Export

# Sort by different criteria
filebyte --sort-by size     # Largest files first
filebyte --sort-by date     # Newest files first
filebyte --sort-by name     # Alphabetical

# Export results
filebyte --export results.json
filebyte --export analysis.csv

Interactive Menu

# Launch interactive menu
filebyte -i
filebyte --interactive

The interactive menu provides a user-friendly interface with the following options:

OptionDescription
1List files in current directory
2Analyze a specific file
3Analyze a directory
4Find duplicate files
5Show directory tree
6List all disks
7Search for files (regex)
8Show file type statistics
9Bit converter (bits, kbits, mbits, gbits, tbits)
LChange language
0Exit

Bit Converter - Option 9 allows you to convert between bits and bytes:

  • Input formats: 1000 bits, 500 kbits, 1.5 mbits, 2 gbits
  • Shows conversions in both bits and bytes formats

The menu automatically clears the screen between operations for a clean interface.

Language Support

filebyte supports internationalization (i18n) with multiple language options:

# Launch interactive language selection menu
filebyte --language
filebyte --lang

# Set language directly by name
filebyte --language russian
filebyte --language chinese_simplified
filebyte --language korean

Available languages

english · chinese_simplified · chinese_traditional · japanese · korean · spanish · french · deutsch · russian · portuguese · italian

Features

  • English is always the default and fallback language
  • On first run without a saved preference, the language selection menu appears automatically
  • Language preference is saved to the config file at ~/.config/filebyte/config.json (Linux) or %APPDATA%\filebyte\config.json (Windows)
  • Within the interactive menu, press L to change language at any time
  • The installer (install.sh / install.bat) also prompts for language selection during installation

Command Line Options

OptionShortDescription
--version-vShow version information
--help-hShow help information
--size <UNIT>-sShow file sizes with specified unit (auto, b/bytes, kb/kilobytes, mb/megabytes, gb/gigabytes, tb/terabytes)
--tree-tShow directory tree
--properties-pShow comprehensive file/directory analysis
--no-colorDisable colored output
--disk <DISK>-mDisk operations ('list' or specific disk name)
--search <PATTERN>-eSearch files using regex pattern
--excluding <PATTERN>-xExclude files matching regex pattern
--extension <EXT>-EOnly list files with the specified extension (e.g. rs, txt, pdf)
--sort-by <CRITERIA>Sort by: name, size, date
--duplicatesFind duplicate files
--content-dupsVerify duplicates by content hash instead of size only (true duplicates)
--hash <ALGORITHM>Hash algorithm for content-based deduplication (sha256 or md5)
--export <FILE>Export results to JSON/CSV
--file <FILE>-fAnalyze a specific file
--directory <DIR>-dAnalyze a directory as a whole
--recursive-rEnable recursive searching and analysis
--max-depth <N>Limit recursive search depth (requires `--recursive`)
--jsonOutput results as JSON to stdout
--whole-wAnalyze path as whole (auto-detects file or directory)
--interactive-iEnable interactive menu mode
--lines-lCount lines in files
--preview [MODE]-PPreview file contents (N, f/N, or l/N for first/last N lines)
--exclude-dirs-XExclude all directories from results
--top <N>Show the N largest files in a directory
--ignore-hiddenSkip hidden files and directories (dotfiles)
--statShow a summary of directory statistics (file count, total size, etc.)
--larger-than <SIZE>Filter files larger than threshold (10MB, 1GB, 8 GB, 2MiB, 1GiB, or path to file)
--smaller-than <SIZE>Filter files smaller than threshold (1KB, 500MB, 500 MB, 2MiB, 1GiB, or path to file)
--equal-to <SIZE>Filter files equal to threshold (10MB, 1GB, 8 GB, 2MiB, 1GiB, or path to file)
--older-than <DURATION>Filter files older than duration (30d, 2w, 1y, yyyy-mm-dd, 30 d)
--newer-than <DURATION>Filter files newer than duration (7d, 1w, 7 d)
--emptyShow only empty files and directories
--content <PATTERN>Search for pattern inside file contents
--delete-duplicatesDelete duplicate files, keeping the first occurrence
--merge-duplicatesMerge duplicate files by hard linking
--forceSkip confirmation prompts for destructive actions
--language <LANG>--langLaunch interactive language selection (or set directly with a language code like japanese)

Examples

Everyday Usage

# Quick directory overview (shows permissions & dates)
filebyte

# Find large files with sizes
filebyte -s --sort-by size

# Analyze disk usage
filebyte --disk list -s gb

# Find all PDFs
filebyte --search "\.pdf$"

# List only files with a specific extension
filebyte --extension rs
filebyte -E txt

# Recursively list only files with a specific extension
filebyte --extension rs --recursive
filebyte -E txt -r

# Check a specific file's details
filebyte -f important.txt

# Get directory metadata
filebyte -d /home/user/projects

# Search recursively through directories
filebyte -r --search "\.rs$"

# Recursively exclude hidden files and sort by size
filebyte -r --excluding "^\." --sort-by size

# Count lines in all files in current directory
filebyte -l

# Count lines recursively, excluding target directories
filebyte -lr -x target

# Exclude all directories from output
filebyte -X

# Find files larger than 100MB
filebyte --larger-than 100MB

# Find files smaller than 1KB
filebyte --smaller-than 1KB

# Find files exactly matching a size
filebyte --equal-to 50MB
filebyte --equal-to 2MiB

# Find files older than 30 days
filebyte --older-than 30d

# Find files newer than 1 week
filebyte --newer-than 1w

# Show only empty files and directories
filebyte --empty

# Search for text inside files
filebyte --content "TODO"

# Recursively search for text inside files
filebyte --content "FIXME" -r

# Delete duplicate files (keeps first occurrence)
filebyte --duplicates --delete-duplicates --force

# Merge duplicates by hard linking
filebyte --duplicates --merge-duplicates --force

# Recursively search for a file by name
filebyte -r -f filename

# Gets the file info for foo and counts the lines of the bar file
filebyte -f foo -l bar

# Gets the info for foo and bar
filebyte foo bar

# Gets the info for foo and bar directory
filebyte foo bar/

Advanced Analysis

# Comprehensive file analysis
filebyte -p --export analysis.json

# Find and sort duplicates by size
filebyte --duplicates -s --sort-by size

# Exclude system files and sort by date
filebyte --excluding "^\." --sort-by date

# Recursively analyze entire project structure
filebyte -r -p /home/user/projects

# Find all config files recursively
filebyte -r --search "config" --sort-by date

# Analyze path as whole (auto-detects file or directory)
filebyte -w /path/to/something

# Search with full paths shown
filebyte -r -e kilo

# Preview file contents (first/last N lines)
filebyte --preview 20 important.txt
filebyte -P 5 src/main.rs
filebyte -Pf notes.txt
filebyte -Pl notes.txt
filebyte -Pf20 notes.txt
filebyte -Pl20 notes.txt
filebyte -P f:5 notes.txt
filebyte -P l:5 notes.txt

Power User Tips

# Monitor large directories
filebyte /var/log -s mb --sort-by size

# Find recently modified config files
filebyte --search "config" --sort-by date -p

# Disk space analysis
filebyte --disk list -s gb | head -10

# Deep analysis of entire filesystem
filebyte -r / -s gb --sort-by size | head -20

# Find all executables recursively
filebyte -r --search "\.(exe|bin|sh)$" --sort-by size

# Quick file analysis - no flags needed!
filebyte important.txt