✔ 自动清理:
- Desktop 下的 .~* / ._*
- 企业微信缓存目录里的 隐藏文件 + 空文件夹
✔ 安全机制:
- 企业微信运行中 → 不清理
- 支持 Dry-Run 预演
- 日志记录 + 30 天自动清理
✔ 自动化方式:
- 每周定时(launchd)
- 菜单栏一键手动执行
一、创建脚本(核心,只做一次)
① 创建脚本目录
mkdir -p ~/scripts
② 创建清理脚本
vim ~/scripts/clean_mac_junk.sh
⬇️ 粘贴以下【完整脚本内容】⬇️
#!/bin/zsh
########################
# 配置区
########################
LOG_DIR="$HOME/Library/Logs/cleanup"
LOG_FILE="$LOG_DIR/cleanup_$(date +%Y-%m).log"
# true = 预演(不删除) / false = 正式删除
DRY_RUN=false
# 企业微信进程名
WEWORK_PROCESS="WeWork"
# 清理目标目录
TARGET_DIRS=(
"$HOME/Desktop"
"$HOME/Library/Containers/com.tencent.WeWorkMac/Data/Documents/Profiles/2DB1619D4101B5492622BC2CCD0F9193/Caches/Files"
)
########################
# 工具函数
########################
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
}
run_cmd() {
if $DRY_RUN; then
log "[DRY-RUN] $*"
else
eval "$@"
fi
}
########################
# 前置检查
########################
mkdir -p "$LOG_DIR"
# 企业微信运行中则跳过
if pgrep -x "$WEWORK_PROCESS" >/dev/null; then
log "企业微信正在运行,跳过清理"
exit 0
fi
log "===== 清理任务开始 ====="
########################
# 清理逻辑
########################
for dir in "${TARGET_DIRS[@]}"; do
if [[ -d "$dir" ]]; then
log "扫描目录:$dir"
SIZE_BEFORE=$(du -sk "$dir" 2>/dev/null | awk '{print $1}')
run_cmd "find '$dir' -type f \\( -name '.~*' -o -name '._*' \\) -delete 2>/dev/null"
run_cmd "find '$dir' -depth -type d -empty -delete 2>/dev/null"
SIZE_AFTER=$(du -sk "$dir" 2>/dev/null | awk '{print $1}')
SAVED=$((SIZE_BEFORE - SIZE_AFTER))
log "释放空间:${SAVED} KB"
else
log "目录不存在,跳过:$dir"
fi
done
########################
# 日志保留 30 天
########################
find "$LOG_DIR" -type f -name "cleanup_*.log" -mtime +30 -delete
log "===== 清理任务结束 ====="
echo "" >> "$LOG_FILE"
③ 保存并赋予执行权限
chmod +x ~/scripts/clean_mac_junk.sh
④ 手动测试一次(推荐)
~/scripts/clean_mac_junk.sh
无报错即可 ✅
二、(可选)Dry-Run 预演模式
如果你想先看看会删什么:
nano ~/scripts/clean_mac_junk.sh
把:
DRY_RUN=false
改成:
DRY_RUN=true
保存后执行:
~/scripts/clean_mac_junk.sh
看日志确认无误后,再改回 false。
三、设置定时自动运行(launchd)
① 创建 plist
nano ~/Library/LaunchAgents/com.user.clean.mac.junk.plist
⬇️ 粘贴内容(⚠️把用户名换成你的)⬇️
<?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.user.clean.mac.junk</string>
<key>ProgramArguments</key>
<array>
<string>/bin/zsh</string>
<string>/Users/mingdong/scripts/clean_mac_junk.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Weekday</key>
<integer>1</integer>
<key>Hour</key>
<integer>3</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
② 加载任务
launchctl unload ~/Library/LaunchAgents/com.user.clean.mac.junk.plist 2>/dev/null
launchctl load ~/Library/LaunchAgents/com.user.clean.mac.junk.plist
验证
launchctl list | grep mac.junk
有输出即成功 ✅
四、创建菜单栏一键执行(Automator)
① 打开
Automator
- 新建 → 应用程序
② 添加动作
- 搜索 “运行 Shell 脚本”
- Shell 选择:
/bin/zsh
脚本内容:
~/scripts/clean_mac_junk.sh
③ 保存
- 名称:
🧹 Mac 清理器
- 位置:
Applications
④ 常驻菜单栏
- 系统设置 → 通用 → 登录项
- 添加 🧹 Mac 清理器.app
五、日志查看位置(非常重要)
~/Library/Logs/cleanup/
查看:
ls ~/Library/Logs/cleanup
六、你现在拥有的最终能力清单
✔ 自动 + 手动
✔ 安全(WeWork 运行保护)
✔ 可审计(日志)
✔ 可预演(Dry-Run)
✔ 可长期运行
🧠 一句话总结
你现在这套,是 macOS 高级用户 / DevOps 级别的完整自动维护方案
放着跑,几年都不用再管。
删除.DS_Store文件
删除 DS_Store文件完全是安全的操作,它不会损害电脑,也不会造成个人数据丢失。删除后,「访达」在打开文件夹是会以默认显示模式显示文件夹。在你进行某些「访达」操作后,系统又会在后台自动创建DS_Store文件。
find . -name '.DS_Store' -type f -delete
到这里,当前文件夹目录下的所有.DS_Store文件都会消失。
查询空文件夹
find . -type d -empty
运行这个命令时,它会列出所有符合这些条件的空目录。
是一个在 Unix/Linux 系统中使用的命令,用于查找当前目录(.表示当前目录)及其子目录下所有为空的目录。这条命令的组成部分如下:
find:这是用来搜索文件和目录的标准命令。.:这代表从当前目录开始搜索。你可以替换为任何其他路径以指定不同的搜索起点。-type d:这是一个测试条件,告诉find命令只匹配类型为目录 (d) 的条目。如果你想要查找文件而不是目录,可以将d改为f。-empty:这是另一个测试条件,它告诉find只选择那些内容为空的文件或目录。对于目录来说,这意味着它们不包含任何文件或子目录。
删除空文件夹
find . -type d -empty -delete
如果你想对找到的每个空目录执行某些操作,例如删除它们,可以在命令末尾添加 -delete 选项