Shell脚本如何清理用户缓存文件

wen 实用脚本 2

我来介绍几种常见的Shell脚本清理用户缓存的方法:

Shell脚本如何清理用户缓存文件

综合清理脚本

#!/bin/bash
# 清理用户缓存脚本
echo "开始清理用户缓存..."
# 清理浏览器缓存(以Chrome为例)
if [ -d "$HOME/.cache/google-chrome" ]; then
    echo "清理Chrome缓存..."
    rm -rf "$HOME/.cache/google-chrome/"*
    echo "Chrome缓存已清理"
fi
# 清理Firefox缓存
if [ -d "$HOME/.cache/mozilla/firefox" ]; then
    echo "清理Firefox缓存..."
    rm -rf "$HOME/.cache/mozilla/firefox/"*
    echo "Firefox缓存已清理"
fi
# 清理系统应用缓存
echo "清理系统应用缓存..."
rm -rf "$HOME/.cache/"*
# 清理缩略图缓存
echo "清理缩略图缓存..."
rm -rf "$HOME/.thumbnails/"*
rm -rf "$HOME/.cache/thumbnails/"*
# 清理软件包管理器缓存
echo "清理APT缓存..."
sudo apt-get clean
sudo apt-get autoclean
# 清理日志文件
echo "清理旧日志文件..."
find "$HOME" -name "*.log" -type f -mtime +7 -delete
echo "缓存清理完成!"

交互式清理脚本

#!/bin/bash
# 颜色定义
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# 显示菜单
show_menu() {
    clear
    echo -e "${GREEN}缓存清理工具${NC}"
    echo "========================"
    echo "1. 清理浏览器缓存"
    echo "2. 清理系统缓存"
    echo "3. 清理缩略图缓存"
    echo "4. 清理日志文件"
    echo "5. 清理所有缓存"
    echo "6. 退出"
    echo "========================"
}
# 清理浏览器缓存
clean_browser_cache() {
    echo -e "${YELLOW}正在清理浏览器缓存...${NC}"
    # Chrome
    if [ -d "$HOME/.cache/google-chrome" ]; then
        rm -rf "$HOME/.cache/google-chrome/"* 2>/dev/null
        echo "Chrome缓存已清理"
    fi
    # Firefox
    if [ -d "$HOME/.cache/mozilla/firefox" ]; then
        rm -rf "$HOME/.cache/mozilla/firefox/"* 2>/dev/null
        echo "Firefox缓存已清理"
    fi
    # Chromium
    if [ -d "$HOME/.cache/chromium" ]; then
        rm -rf "$HOME/.cache/chromium/"* 2>/dev/null
        echo "Chromium缓存已清理"
    fi
    echo -e "${GREEN}浏览器缓存清理完成${NC}"
}
# 清理系统缓存
clean_system_cache() {
    echo -e "${YELLOW}正在清理系统缓存...${NC}"
    # 清理 ~/.cache 目录
    if [ -d "$HOME/.cache" ]; then
        rm -rf "$HOME/.cache/"* 2>/dev/null
        echo "系统缓存已清理"
    fi
    # 清理pip缓存
    if [ -d "$HOME/.cache/pip" ]; then
        rm -rf "$HOME/.cache/pip/"* 2>/dev/null
        echo "pip缓存已清理"
    fi
    echo -e "${GREEN}系统缓存清理完成${NC}"
}
# 清理缩略图缓存
clean_thumbnails() {
    echo -e "${YELLOW}正在清理缩略图缓存...${NC}"
    rm -rf "$HOME/.thumbnails/"* 2>/dev/null
    rm -rf "$HOME/.cache/thumbnails/"* 2>/dev/null
    rm -rf "$HOME/.local/share/thumbnails/"* 2>/dev/null
    echo -e "${GREEN}缩略图缓存清理完成${NC}"
}
# 清理日志文件
clean_logs() {
    echo -e "${YELLOW}正在清理旧日志文件...${NC}"
    # 清理7天前的日志
    find "$HOME" -name "*.log" -type f -mtime +7 -delete 2>/dev/null
    echo -e "${GREEN}旧日志文件清理完成${NC}"
}
# 清理所有缓存
clean_all() {
    echo -e "${YELLOW}正在清理所有缓存...${NC}"
    clean_browser_cache
    clean_system_cache
    clean_thumbnails
    clean_logs
    # 清理软件包缓存(需要sudo权限)
    if command -v apt-get &>/dev/null; then
        sudo apt-get clean 2>/dev/null
        sudo apt-get autoclean 2>/dev/null
    fi
    echo -e "${GREEN}所有缓存清理完成${NC}"
}
# 显示磁盘使用情况
show_disk_usage() {
    echo -e "${YELLOW}缓存目录大小:${NC}"
    du -sh "$HOME/.cache" 2>/dev/null || echo "0B"
    du -sh "$HOME/.thumbnails" 2>/dev/null || echo "0B"
}
# 主循环
while true; do
    show_menu
    show_disk_usage
    echo ""
    read -p "请选择操作 [1-6]: " choice
    case $choice in
        1)
            clean_browser_cache
            ;;
        2)
            clean_system_cache
            ;;
        3)
            clean_thumbnails
            ;;
        4)
            clean_logs
            ;;
        5)
            clean_all
            ;;
        6)
            echo -e "${GREEN}退出程序${NC}"
            exit 0
            ;;
        *)
            echo -e "${RED}无效选择,请重新输入${NC}"
            ;;
    esac
    echo ""
    read -p "按回车键继续..."
done

特定应用缓存清理

#!/bin/bash
# 清理特定应用的缓存
# 清理Docker缓存
clean_docker() {
    if command -v docker &>/dev/null; then
        echo "清理Docker缓存..."
        docker system prune -af --volumes 2>/dev/null
    fi
}
# 清理npm缓存
clean_npm() {
    if command -v npm &>/dev/null; then
        echo "清理npm缓存..."
        npm cache clean --force 2>/dev/null
    fi
}
# 清理pip缓存
clean_pip() {
    if command -v pip3 &>/dev/null; then
        echo "清理pip缓存..."
        pip3 cache purge 2>/dev/null
    fi
}
# 清理snap缓存
clean_snap() {
    if command -v snap &>/dev/null; then
        echo "清理snap缓存..."
        sudo snap clean --all 2>/dev/null
    fi
}
# 清理flatpak缓存
clean_flatpak() {
    if command -v flatpak &>/dev/null; then
        echo "清理flatpak缓存..."
        flatpak uninstall --unused 2>/dev/null
    fi
}
# 清理conda缓存
clean_conda() {
    if command -v conda &>/dev/null; then
        echo "清理conda缓存..."
        conda clean --all -y 2>/dev/null
    fi
}

定时清理脚本

#!/bin/bash
# 定时清理脚本 - 建议配合cron使用
LOG_FILE="$HOME/.cache_cleaner.log"
CURRENT_DATE=$(date "+%Y-%m-%d %H:%M:%S")
echo "[$CURRENT_DATE] 开始清理缓存" >> "$LOG_FILE"
# 清理各类缓存并记录日志
cleanup_with_log() {
    local dir="$1"
    local name="$2"
    if [ -d "$dir" ]; then
        local size_before=$(du -sh "$dir" 2>/dev/null | cut -f1)
        rm -rf "$dir"/*
        echo "已清理 $name ($size_before)" >> "$LOG_FILE"
    fi
}
# 执行清理
cleanup_with_log "$HOME/.cache" "系统缓存"
cleanup_with_log "$HOME/.thumbnails" "缩略图缓存"
cleanup_with_log "$HOME/.local/share/Trash" "回收站"
# 清理7天前的日志文件
find "$HOME" -name "*.log" -type f -mtime +7 -delete 2>/dev/null
echo "清理完成" >> "$LOG_FILE"
echo "------------------------" >> "$LOG_FILE"
# 显示清理历史
cat "$LOG_FILE"

使用方法

  1. 保存脚本

    # 保存为 clean_cache.sh
    nano clean_cache.sh
  2. 添加执行权限

    chmod +x clean_cache.sh
  3. 运行脚本

    # 直接运行
    ./clean_cache.sh

或使用bash运行

bash clean_cache.sh


4. **设置定时任务**(可选):
```bash
# 编辑crontab
crontab -e
# 添加每周日清理的任务
0 2 * * 0 /path/to/clean_cache.sh

注意事项

  1. 备份重要数据:在运行清理脚本前,确保重要数据已备份
  2. 权限问题:某些目录可能需要sudo权限
  3. 选择性清理:可以根据实际需求选择清理的内容
  4. 谨慎使用rm -rf命令要小心使用,避免误删重要文件

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