How to Remove Directory in Bash
• 2 min read
bash file operations remove directory rmdir
Quick Answer: Remove Directory in Bash
To delete an empty directory in Bash, use rmdir dirname. To delete a directory with contents, use rm -r dirname. Always test with ls first to verify what you’re deleting, especially with -r.
Quick Comparison: Directory Removal Methods
| Method | Usage | For Empty | For Filled | Safety |
|---|---|---|---|---|
| rmdir | rmdir dir | Yes | No | Safe |
| rm -r | rm -r dir | Yes | Yes | Dangerous |
| rm -ri | Interactive | Yes | Yes | Safer |
| find -delete | Complex | Yes | Yes | Controlled |
| rm -rf | Forced | Yes | Yes | Very dangerous |
Bottom line: Use rmdir for empty dirs, rm -ri for filled dirs (interactive mode).
Delete directories in Bash.
Method 1: Remove Empty Directory
rmdir empty_dir
Works only if directory is empty. Safe option.
Method 2: Remove Directory and Contents
# Remove directory and everything in it
rm -r mydir
# With confirmation
rm -ri mydir
Method 3: Force Removal (Caution!)
# Remove without confirmation (DANGEROUS)
rm -rf mydir/
Always test before using -f!
Useful Options
| Option | Purpose |
|---|---|
-r | Recursive (remove contents) |
-i | Interactive (ask before each delete) |
-v | Verbose (show what’s deleted) |
-f | Force (no confirmation) |
rmdir | Only for empty directories |
Practical Examples
Safe Directory Removal
dir="/home/user/old_project"
# Check what will be deleted
echo "Files to delete:"
find "$dir"
# Ask for confirmation
read -p "Delete this directory? (y/n) " confirm
[ "$confirm" = "y" ] && rm -r "$dir"
Remove Empty Directories
# Only remove if empty
rmdir /home/cleanup/dir1 /home/cleanup/dir2
Remove Old Backups
backup_dir="/home/backups"
# Remove directories older than 30 days
find "$backup_dir" -type d -mtime +30 -exec rm -r {} \;
Remove with Exclusions
# Remove but keep important files
rm -r mydir/
# Or before deletion:
find mydir -name "important.txt" -move # save first
rm -r mydir/
Remove Hidden Directories
# Remove .git directory
rm -r .git/
# Be careful with .hidden directories
rm -ri .*/ # Ask before each
Safety Checklist
- Check directory exists:
ls -la dir - List contents:
find dir - Consider backup:
cp -r dir dir.bak - Test deletion on test data first
- Use
-ifor confirmation - Avoid
-funless absolutely necessary
Dangerous! Don’t Do This
rm -rf / # Delete entire system!
rm -rf /* # Delete all root directories
rm -rf $VAR/* # If $VAR is empty, deletes root!
Always double-check paths!
Safer Pattern
#!/bin/bash
target_dir="$1"
# Validate
if [ ! -d "$target_dir" ]; then
echo "ERROR: Directory not found: $target_dir"
exit 1
fi
# Confirm
read -p "Delete $target_dir? (y/n) " confirm
[ "$confirm" != "y" ] && exit 0
# Delete
rm -rv "$target_dir"
Key Points
- Use
rmdirfor empty directories only - Use
rm -rfor directories with contents - Always use
-iwhen learning - Avoid
-fin scripts (ask for confirmation) - Test paths carefully before deletion