Android SD 卡无用文件自动清理

By | 2015-05-01

sh脚本

#!/system/bin/sh
if [ -f "/some_path/cleanup_sdcard_no_delete.txt" ]
then
cd /sdcard
cat "/some_path/cleanup_sdcard_no_delete.txt" | sed 's/|/" ! -iname "/g' | sed 's/\(.*\)/! -iname "\1"/g' | xargs find -maxdepth 1 | grep -vEi "^\\.$|^\\.\\.$" | sed 's/\(^.*$\)/"\1"/g' > /some_path/cleanup_sdcard.log
cat "/some_path/cleanup_sdcard_no_delete.txt" | sed 's/|/" ! -iname "/g' | sed 's/\(.*\)/! -iname "\1"/g' | xargs find -maxdepth 1 | grep -vEi "^\\.$|^\\.\\.$" | sed 's/\(^.*$\)/"\1"/g' | xargs rm -r
fi

cleanup_sdcard_no_delete.txt 格式:

file_name0|file_name1|...|file_nameN

用法

  • 装个 busybox (安卓自带的 shell 问题很多, 参考 这里 )
  • Tasker 添加执行脚本文件的任务 (Script > Run Shell), Command 为 "PATH=/system/xbin sh /some_path/cleaner.sh" (不含引号),
    勾选 "Use Root" 和 "Continue Task After Error", 然后再添加 Tasker 的定时执行什么的就好了, 具体自行研究 Tasker 用法
  • 采用白名单模式, 文件名完全匹配 cleanup_sdcard_no_delete.txt 中字符串的文件将不会被删除, 其余全部删除, 文件名可以包含空格

注意事项

  • 这次是标准的 rm -r 了, 请在尝试前备份好, 确认无误了再操作
  • 脚本中有一个测试的内容, 是输出要删除的文件到一个 log 文件中, 请务必先行确认

转载请注明来自: http://zsaber.com/blog/p/22

既然都来了, 有啥想法顺便留个言呗? (无奈小广告太多, 需审核, 见谅)

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注