Commands

Delete

Removing files matching a pattern

rclone delete

Deletes files (not folders) that match your criteria.

CommandWhat it doesRemoves foldersUse case
deleteRemoves files onlySelective file removal
purgeRemoves everythingDelete entire folder
cleanupEmpties trashClean provider trash (if supported)
rmdirsRemoves empty foldersClean up after delete

Quick start

# Basic syntax (DANGEROUS)
rclone delete remote:path

# Delete with filter (safer)
rclone delete remote:path --include "*.tmp" --dry-run
rclone delete remote:path --include "*.tmp"  # Actually delete

# Delete old files
rclone delete remote:backup --min-age 365d --dry-run

Usage

Always Preview First

# Step 1: List what matches
rclone ls remote:folder --include "*.log"

# Step 2: Dry run delete
rclone delete remote:folder --include "*.log" --dry-run

# Step 3: Actually delete (if sure)
rclone delete remote:folder --include "*.log"

Use Specific Paths

# BAD
rclone delete remote: --include "*.tmp"  # Entire remote

# GOOD
rclone delete remote:project/temp --include "*.tmp" # Specific folder

Create Safety Backup

# Backup before bulk delete
rclone copy remote:important remote:important-backup

# Then safe to clean
rclone delete remote:important --min-age 180d

# At first, you may think we're simply duplicating the folder that we're going to delete.
# You're correct!
# This is to make sure that in case the `--min-age` filter doesn't work as expected,
# we have a backup of the important files.

Interactive Deletion

# Confirm each file (safer for important data)
rclone delete remote:folder \
  --include "*.bak" \
  --interactive

Filtering

File Pattern
# Delete specific extensions
rclone delete remote:folder \
  --include "*.bak" \
  --include "*.old" \
  --dry-run

# Delete except important files
rclone delete remote:folder \
  --exclude "*.doc" \
  --exclude "*.pdf" \
  --dry-run
Size
# Delete large files
rclone delete remote:folder --min-size 1G --dry-run

# Delete empty files
rclone delete remote:folder --max-size 0 --dry-run

# Delete files in size range
rclone delete remote:folder \
  --min-size 100M \
  --max-size 500M \
  --dry-run
Age
# Delete old files
rclone delete remote:folder --min-age 365d --dry-run

# Delete recent temporary files
rclone delete remote:temp --max-age 7d --dry-run

# Specific date range
rclone delete remote:folder \
  --min-age 2023-01-01 \
  --max-age 2023-12-31 \
  --dry-run
Advanced
# Using filter file
cat > delete-filters.txt << EOF
- *.keep
- important/**
+ *.tmp
+ *.bak
+ cache/**
- *
EOF

rclone delete remote:folder --filter-from delete-filters.txt --dry-run

Use cases & examples

Clean Temporary Files

# Remove .tmp and cache files
rclone delete remote:project \
  --include "*.tmp" \
  --include "*.cache" \
  --include "*~" \
  --dry-run

# After verifying, run without --dry-run

Remove Old Backups

# Delete backups older than 90 days
rclone delete remote:backups \
  --min-age 90d \
  --dry-run \
  --progress

# Keep last 7 daily backups
rclone delete remote:daily-backups \
  --min-age 7d \
  --dry-run

Log Rotation

#!/bin/bash
# Clean old logs, keep recent

REMOTE="remote:logs"

# Keep last 30 days of logs
echo "Cleaning logs older than 30 days..."
rclone delete "$REMOTE" \
  --include "*.log" \
  --min-age 30d \
  --dry-run

read -p "Delete these files? (y/n): " confirm
if [ "$confirm" = "y" ]; then
  rclone delete "$REMOTE" \
    --include "*.log" \
    --min-age 30d \
    --progress
fi

Remember: Deletion is permanent on most cloud providers! There's no undo button. Always test with --dry-run and have backups.

You can always check out the full documentation if you need more information.

If you've deleted by mistake, check the FAQ for recovery options.

How is this guide?