rm Command Guide
The rm command removes files and directories permanently. Learn how to use it safely to avoid accidental data loss.
5 min read•Last updated: 2024
Dai Aoki
CEO at init, Inc. / CTO at US & JP startups / Creator of WebTerm
Quick Reference
Basic
rm file.txtDelete filerm f1.txt f2.txtDelete multiple filesrm *.logDelete by patternDirectories
rm -r dir/Delete directoryrm -rf dir/Force deletermdir dir/Delete empty dirSafety
-iPrompt before delete-IPrompt once for bulk-vVerbose outputSpecial
rm -- -fileDelete dash-prefixedrm -f fileForce (no error)find . -deleteDelete found filesDownloadable Image Preview
Failed to generate preview
Basic Usage
rm deletes files permanently - there is no trash bin.
bash
# Remove a single file
rm file.txt
# Remove multiple files
rm file1.txt file2.txt file3.txt
# Remove with wildcard
rm *.tmpWarning
Files deleted with rm are gone permanently. There is no "undo" or trash folder. Always double-check before pressing Enter.
Common Options
rm Options
| -r, -R | Remove directories recursively |
| -i | Prompt before every removal |
| -I | Prompt once before removing many files |
| -f | Force removal without prompting |
| -v | Verbose output |
| -d | Remove empty directories |
Removing Directories
bash
# Remove empty directory
rmdir empty_dir/
# or
rm -d empty_dir/
# Remove directory and contents
rm -r directory/
# Remove without prompting (use carefully!)
rm -rf directory/Warning
rm -rf is extremely dangerous. Never run rm -rf / or rm -rf ~. Always verify the path first.Safe Deletion Practices
Interactive mode
bash
# Ask before each file
rm -i *.txt
# Ask once for multiple files
rm -I *.logPreview before deleting
bash
# List files first
ls *.tmp
# Then delete
rm *.tmpUse verbose mode
bash
rm -rv old_files/Create an alias for safety
bash
# Add to ~/.bashrc or ~/.zshrc
alias rm='rm -i'
# When you need to force, use \rm
\rm -rf directory/Handling Special Filenames
bash
# File starting with dash
rm -- -filename.txt
rm ./-filename.txt
# File with spaces
rm "file with spaces.txt"
rm file\ with\ spaces.txt
# File with special characters
rm 'file!@#$%.txt'Practical Examples
Clean up temporary files
bash
rm -f *.tmp *.bak *~Remove files older than 30 days
bash
find /tmp -type f -mtime +30 -deleteRemove empty directories
bash
find . -type d -empty -deleteRemove all except certain files
bash
# Using extended globbing (bash)
shopt -s extglob
rm !(keep.txt|important.txt)
# Or using find
find . -maxdepth 1 -type f ! -name "keep.txt" -deleteSecurely delete sensitive files
bash
# Overwrite before deleting
shred -vfz -n 5 sensitive_file.txt
# Then remove
rm sensitive_file.txtAlternatives to rm
Move to trash instead
bash
# Install trash-cli
sudo apt install trash-cli
# Use trash instead of rm
trash-put file.txt
# List trashed files
trash-list
# Restore from trash
trash-restoreTip
Consider using
trash-cli for a safer alternative that moves files to trash instead of permanently deleting.Common Dangerous Commands to Avoid
bash
# NEVER run these commands:
rm -rf / # Deletes entire system
rm -rf ~ # Deletes home directory
rm -rf /* # Same as above
rm -rf . # Deletes current directory
rm -rf $UNDEFINED_VAR/* # If var is empty, deletes /Summary
rm is powerful but dangerous. Key takeaways:
- Use
rm -ifor interactive confirmation - Use
rm -rfor directories - Always verify paths before using
rm -rf - Preview with
lsbefore deleting - Consider
trash-clias a safer alternative