Terminal GuideTerminal Guide

rm Command Guide

The rm command removes files and directories permanently. Learn how to use it safely to avoid accidental data loss.

5 min readLast updated: 2024
Dai Aoki

Dai Aoki

CEO at init, Inc. / CTO at US & JP startups / Creator of WebTerm

Quick Reference

Basic

rm file.txtDelete file
rm f1.txt f2.txtDelete multiple files
rm *.logDelete by pattern

Directories

rm -r dir/Delete directory
rm -rf dir/Force delete
rmdir dir/Delete empty dir

Safety

-iPrompt before delete
-IPrompt once for bulk
-vVerbose output

Special

rm -- -fileDelete dash-prefixed
rm -f fileForce (no error)
find . -deleteDelete found files

Downloadable 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 *.tmp
Warning
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, -RRemove directories recursively
-iPrompt before every removal
-IPrompt once before removing many files
-fForce removal without prompting
-vVerbose output
-dRemove 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 *.log

Preview before deleting

bash
# List files first
ls *.tmp

# Then delete
rm *.tmp

Use 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 -delete

Remove empty directories

bash
find . -type d -empty -delete

Remove 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" -delete

Securely delete sensitive files

bash
# Overwrite before deleting
shred -vfz -n 5 sensitive_file.txt

# Then remove
rm sensitive_file.txt

Alternatives 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-restore
Tip
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 -i for interactive confirmation
  • Use rm -r for directories
  • Always verify paths before using rm -rf
  • Preview with ls before deleting
  • Consider trash-cli as a safer alternative

Related Articles