如何写一个脚本清理缩略图缓存

wen 实用脚本 1

本文目录导读:

如何写一个脚本清理缩略图缓存

  1. Linux/macOS 系统
  2. Windows 系统
  3. 使用方法

我来帮你写一个清理缩略图缓存的脚本,根据不同操作系统,这里有几种方案:

Linux/macOS 系统

通用清理脚本 (Bash)

#!/bin/bash
# 清理缩略图缓存脚本
echo "开始清理缩略图缓存..."
# 用户缩略图缓存目录
THUMBNAIL_DIR="$HOME/.thumbnails"
LARGE_THUMBNAIL_DIR="$HOME/.cache/thumbnails"
# 清理 .thumbnails 目录
if [ -d "$THUMBNAIL_DIR" ]; then
    echo "清理 $THUMBNAIL_DIR..."
    rm -rf "$THUMBNAIL_DIR"/*
    echo "✓ 已清理 $THUMBNAIL_DIR"
else
    echo "! $THUMBNAIL_DIR 不存在"
fi
# 清理 .cache/thumbnails 目录
if [ -d "$LARGE_THUMBNAIL_DIR" ]; then
    echo "清理 $LARGE_THUMBNAIL_DIR..."
    rm -rf "$LARGE_THUMBNAIL_DIR"/*
    echo "✓ 已清理 $LARGE_THUMBNAIL_DIR"
else
    echo "! $LARGE_THUMBNAIL_DIR 不存在"
fi
# 清理磁盘图片预览缓存
if command -v gsettings &> /dev/null; then
    gsettings set org.gnome.nautilus.preferences show-image-thumbnails "never"
    sleep 1
    gsettings set org.gnome.nautilus.preferences show-image-thumbnails "always"
    echo "✓ 已重置文件管理器预览缓存"
fi
echo "清理完成!"

高级清理脚本 (带统计功能)

#!/bin/bash
# 高级缩略图清理脚本
echo "═══════════════════════════════════════════"
echo "         缩略图缓存清理工具"
echo "═══════════════════════════════════════════"
echo ""
# 定义清理函数
clean_directory() {
    local dir=$1
    local name=$2
    if [ -d "$dir" ]; then
        # 计算缓存大小
        local size=$(du -sh "$dir" 2>/dev/null | cut -f1)
        local count=$(find "$dir" -type f 2>/dev/null | wc -l)
        echo "📁 发现 $name:"
        echo "   位置: $dir"
        echo "   大小: $size"
        echo "   文件数: $count"
        echo ""
        echo -n "是否清理? (y/n): "
        read -r response
        if [[ "$response" =~ ^[Yy]$ ]]; then
            rm -rf "$dir"/*
            mkdir -p "$dir"
            echo "✓ 已清理 $name"
        else
            echo "✗ 跳过 $name"
        fi
    else
        echo "! $name 目录不存在"
    fi
    echo ""
}
# 清理各个缓存位置
clean_directory "$HOME/.thumbnails" "旧版缩略图缓存"
clean_directory "$HOME/.cache/thumbnails" "新版缩略图缓存"
clean_directory "$HOME/.cache/gnome-software/thumbnails" "软件中心缓存"
# 额外清理选项
echo "是否清理其他应用缓存? (y/n): "
read -r response
if [[ "$response" =~ ^[Yy]$ ]]; then
    # 清理 thumbnailer 进程
    pkill -f "thumbnailer" 2>/dev/null || true
    # 清理 Nemo/Na​​utilus 缓存
    rm -rf "$HOME/.local/share/gvfs-metadata"/* 2>/dev/null || true
    echo "✓ 已清理其他缓存"
fi
echo ""
echo "═══════════════════════════════════════════"
echo "         清理完成!"
echo "═══════════════════════════════════════════"

Windows 系统

PowerShell 脚本

# Clean-Thumbnails.ps1
Write-Host "开始清理缩略图缓存..." -ForegroundColor Green
# 关闭资源管理器
Stop-Process -Name "explorer" -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 2
# 清理缩略图缓存
$thumbnailPaths = @(
    "$env:LOCALAPPDATA\Microsoft\Windows\Explorer\thumbcache_*.db",
    "$env:LOCALAPPDATA\Microsoft\Windows\Explorer\*.db",
    "$env:APPDATA\Microsoft\Windows\Explorer\*.db"
)
foreach ($path in $thumbnailPaths) {
    if (Test-Path $path) {
        try {
            Remove-Item -Path $path -Recurse -Force -ErrorAction Stop
            Write-Host "已删除: $path" -ForegroundColor Yellow
        } catch {
            Write-Host "删除失败: $path - $_" -ForegroundColor Red
        }
    }
}
# 清理磁盘清理中的缩略图
cleanmgr /sagerun:1 2>$null
# 重启资源管理器
Start-Process explorer
Write-Host "缩略图缓存清理完成!" -ForegroundColor Green
Write-Host "请重启电脑使所有更改生效。" -ForegroundColor Cyan

批处理脚本 (CMD)

@echo off缩略图缓存清理工具
echo ========================================
echo        缩略图缓存清理工具
echo ========================================
echo.
:: 请求管理员权限
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo 请以管理员身份运行此脚本...
    pause
    exit /b 1
)
echo 正在关闭资源管理器...
taskkill /f /im explorer.exe >nul 2>&1
timeout /t 2 /nobreak >nul
echo 正在清理缩略图缓存...
:: 清理缩略图缓存
del /f /s /q "%LOCALAPPDATA%\Microsoft\Windows\Explorer\thumbcache_*.db" 2>nul
del /f /s /q "%LOCALAPPDATA%\Microsoft\Windows\Explorer\*.db" 2>nul
del /f /s /q "%APPDATA%\Microsoft\Windows\Explorer\*.db" 2>nul
:: 清理旧的缓存文件
del /f /s /q "%TEMP%\*.tmp" 2>nul
echo 正在重启资源管理器...
start explorer.exe
echo.
echo 清理完成!
echo 系统已自动重启资源管理器。
echo.
pause

使用方法

Linux/macOS:

# 添加执行权限
chmod +x clean-thumbnails.sh
# 运行脚本
./clean-thumbnails.sh

Windows PowerShell:

# 右键点击脚本 -> 使用 PowerShell 运行
# 或者
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\Clean-Thumbnails.ps1

设置定时任务 (Linux crontab):

# 编辑 crontab
crontab -e
# 添加每月清理任务
0 0 1 * * /path/to/clean-thumbnails.sh

这些脚本会自动检测并清理不同系统上的缩略图缓存,包括文件管理器、系统和各种应用的缓存文件。

抱歉,评论功能暂时关闭!