filebyte
A CLI tool to list files and directories with intelligent size formatting, advanced filtering and file analysis. Made in Rust.
← Back to portfolioInstallation
Aliases
You can invoke the tool as any of the following:
filebyte— full namefbt— 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
- Clone the repository:
git clone https://github.com/execRooted/filebyte.git cd filebyte - 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
- Install Rust from https://www.rust-lang.org/tools/install
- 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:
| Option | Description |
|---|---|
1 | List files in current directory |
2 | Analyze a specific file |
3 | Analyze a directory |
4 | Find duplicate files |
5 | Show directory tree |
6 | List all disks |
7 | Search for files (regex) |
8 | Show file type statistics |
9 | Bit converter (bits, kbits, mbits, gbits, tbits) |
L | Change language |
0 | Exit |
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
| Option | Short | Description |
|---|---|---|
--version | -v | Show version information |
--help | -h | Show help information |
--size <UNIT> | -s | Show file sizes with specified unit (auto, b/bytes, kb/kilobytes, mb/megabytes, gb/gigabytes, tb/terabytes) |
--tree | -t | Show directory tree |
--properties | -p | Show comprehensive file/directory analysis |
--no-color | Disable colored output | |
--disk <DISK> | -m | Disk operations ('list' or specific disk name) |
--search <PATTERN> | -e | Search files using regex pattern |
--excluding <PATTERN> | -x | Exclude files matching regex pattern |
--extension <EXT> | -E | Only list files with the specified extension (e.g. rs, txt, pdf) |
--sort-by <CRITERIA> | Sort by: name, size, date | |
--duplicates | Find duplicate files | |
--content-dups | Verify 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> | -f | Analyze a specific file |
--directory <DIR> | -d | Analyze a directory as a whole |
--recursive | -r | Enable recursive searching and analysis |
--max-depth <N> | Limit recursive search depth (requires `--recursive`) | |
--json | Output results as JSON to stdout | |
--whole | -w | Analyze path as whole (auto-detects file or directory) |
--interactive | -i | Enable interactive menu mode |
--lines | -l | Count lines in files |
--preview [MODE] | -P | Preview file contents (N, f/N, or l/N for first/last N lines) |
--exclude-dirs | -X | Exclude all directories from results |
--top <N> | Show the N largest files in a directory | |
--ignore-hidden | Skip hidden files and directories (dotfiles) | |
--stat | Show 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) | |
--empty | Show only empty files and directories | |
--content <PATTERN> | Search for pattern inside file contents | |
--delete-duplicates | Delete duplicate files, keeping the first occurrence | |
--merge-duplicates | Merge duplicate files by hard linking | |
--force | Skip confirmation prompts for destructive actions | |
--language <LANG> | --lang | Launch 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