自动清理apple notes缓存的脚本

wen 实用脚本 24

本文目录导读:

自动清理apple notes缓存的脚本

  1. macOS Apple Notes 缓存清理脚本
  2. 使用方法
  3. 设置定时自动清理(可选)
  4. 注意事项

macOS Apple Notes 缓存清理脚本

#!/bin/bash
# Apple Notes 缓存清理脚本
# 适用于 macOS
echo "======================================"
echo "  Apple Notes 缓存清理脚本"
echo "======================================"
# 检查 macOS 版本
macos_version=$(sw_vers -productVersion)
echo "系统版本: macOS $macos_version"
# 定义缓存路径
NOTES_CACHE_PATHS=(
    "$HOME/Library/Caches/com.apple.Notes"
    "$HOME/Library/Caches/com.apple.Notes.SharedServices"
    "$HOME/Library/Caches/com.apple.iCloudNotes"
    "$HOME/Library/Caches/CloudKit/com.apple.notes"
    "$HOME/Library/Containers/com.apple.Notes/Data/Library/Caches"
    "$HOME/Library/Containers/com.apple.Notes/Data/Library/Caches/com.apple.Notes"
    "$HOME/Library/Containers/com.apple.iCloudNotes/Data/Library/Caches"
)
# 清理函数
clean_cache() {
    local total_size=0
    local cleaned_count=0
    echo ""
    echo "开始清理 Apple Notes 缓存..."
    for cache_path in "${NOTES_CACHE_PATHS[@]}"; do
        if [ -d "$cache_path" ]; then
            local size=$(du -sh "$cache_path" 2>/dev/null | awk '{print $1}')
            local bytes_size=$(du -sb "$cache_path" 2>/dev/null | awk '{print $1}')
            # 清理缓存内容(保留目录结构)
            find "$cache_path" -type f -delete 2>/dev/null
            find "$cache_path" -type d -empty -delete 2>/dev/null
            echo "  ✓ 已清理: $cache_path"
            echo "    清理前大小: $size"
            total_size=$((total_size + bytes_size))
            cleaned_count=$((cleaned_count + 1))
        else
            echo "  - 路径不存在: $cache_path"
        fi
    done
    echo ""
    echo "清理完成!"
    echo "共清理 $cleaned_count 个缓存目录"
    # 转换为可读格式
    if [ $total_size -gt 1048576 ]; then
        echo "总计释放空间: $(echo "scale=2; $total_size/1048576" | bc) MB"
    elif [ $total_size -gt 1024 ]; then
        echo "总计释放空间: $(echo "scale=2; $total_size/1024" | bc) KB"
    else
        echo "总计释放空间: $total_size bytes"
    fi
}
# 检查是否正在运行 Notes
check_notes_running() {
    if pgrep -x "Notes" > /dev/null; then
        echo ""
        echo "⚠️  注意: Apple Notes 正在运行"
        read -p "是否关闭 Notes 后继续清理? (y/n): " choice
        if [ "$choice" = "y" ] || [ "$choice" = "Y" ]; then
            echo "正在关闭 Notes..."
            killall "Notes" 2>/dev/null
            sleep 2
            if pgrep -x "Notes" > /dev/null; then
                echo "❌ 无法自动关闭 Notes,请手动关闭后重试"
                exit 1
            fi
            echo "✓ Notes 已关闭"
        else
            echo "取消清理操作"
            exit 0
        fi
    fi
}
# 显示当前缓存大小
show_cache_size() {
    echo ""
    echo "当前缓存占用:"
    for cache_path in "${NOTES_CACHE_PATHS[@]}"; do
        if [ -d "$cache_path" ]; then
            local size=$(du -sh "$cache_path" 2>/dev/null | awk '{print $1}')
            echo "  $cache_path: $size"
        fi
    done
}
# 主程序
main() {
    echo ""
    echo "请选择操作:"
    echo "1. 查看缓存大小"
    echo "2. 清理缓存"
    echo "3. 退出"
    read -p "请输入选项 (1-3): " option
    case $option in
        1)
            show_cache_size
            ;;
        2)
            check_notes_running
            clean_cache
            ;;
        3)
            echo "退出脚本"
            exit 0
            ;;
        *)
            echo "无效选项"
            exit 1
            ;;
    esac
}
# 运行主程序
main

使用方法

  1. 保存脚本

    # 将脚本保存为文件
    nano clean_notes_cache.sh
    # 粘贴脚本内容,然后保存
  2. 添加执行权限

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

    ./clean_notes_cache.sh

设置定时自动清理(可选)

使用 macOS 的 launchd 设置定时任务:

  1. 创建 plist 文件

    nano ~/Library/LaunchAgents/com.clean.notes.cache.plist
  2. 添加以下内容

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
     <key>Label</key>
     <string>com.clean.notes.cache</string>
     <key>ProgramArguments</key>
     <array>
         <string>/path/to/clean_notes_cache.sh</string>
     </array>
     <key>StartCalendarInterval</key>
     <dict>
         <key>Hour</key>
         <integer>3</integer>
         <key>Minute</key>
         <integer>0</integer>
     </dict>
     <key>RunAtLoad</key>
     <false/>
    </dict>
    </plist>
  3. 加载定时任务

    launchctl load ~/Library/LaunchAgents/com.clean.notes.cache.plist

注意事项

  1. 备份重要数据:清理前建议备份重要笔记
  2. 关闭 Notes 应用:清理时最好关闭 Notes
  3. iCloud 同步:清理本地缓存不会影响 iCloud 数据
  4. 权限问题:可能需要管理员权限访问某些缓存目录

这个脚本会自动清理 Apple Notes 的本地缓存文件,释放磁盘空间,同时不会影响您的笔记内容和 iCloud 同步。

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