修复Finder(访达)在变更默认打开程序之后图标依然维持原样的异常问题

执行下面命令

1
2
3
4
sudo rm -rfv /Library/Caches/com.apple.iconservices.store
sudo find /private/var/folders/ \( -name com.apple.dock.iconcache -or -name com.apple.iconservices \) -exec rm -rfv {} \;
sleep 3
killall Dock; killall Finder

解释

其中:

  • com.apple.iconservices.store 是系统图标存储的缓存文件,有的时候出问题了可以尝试通过删除来进行修复
  • com.apple.dock.iconcachecom.apple.iconservices 也是系统图标缓存和图标服务的文件,有的时候 com.apple.iconservices 会过大,可以通过删除进行清理

很容易理解的是,第一行的命令中的 rm -rfv 就是简单的强制删除文件的含义。

但第二行的 /private/var/folders/ 在不同的系统版本上可能会略有区别,比如在早期的版本里你也许会需要移除 /private 这个前缀的目录,而第二行命令的 /private/var/folders/ 后面接上了 -name com.apple.dock.iconcache 其实并不意味着 com.apple.dock.iconcache 图标缓存文件和 com.apple.iconservices 图标服务(也许未来会变成目录)这两个文件就直接放在 /private/var/folders/ 的目录下,其实在实际的情况中,它前缀的命令也许是根据不同的 container 容器(macOS 的概念)来生成的,比如:

shell

1
/private/var/folders//m0/k_38ftb53yg0mqbcrrjypr3m0000gn/C/com.apple.dock.iconcache

所以这也是为什么我们需要使用 find 命令来先搜索再删除的原因。

另外值得一提的是,我在寻找资料的时候发现有的地方会使用类似于下面的命令:

shell

1
2
sudo find /private/var/folders/ -name com.apple.dock.iconcache -exec rm {} \;
sudo find /private/var/folders/ -name com.apple.iconservices -exec rm -rf {} \;

但其实这段和上面的命令

shell

1
sudo find /private/var/folders/ \( -name com.apple.dock.iconcache -or -name com.apple.iconservices \) -exec rm -rfv {} \;

效果是一模一样的,只是写法合并了起来。

最后一部分的 killall Dock; killall Finder 就是字面含义,将 DockFinder 进程都结束掉,请放心,他们都会自动重启的,如果出现问题,你也可以通过重启 macOS 来尝试应用上面命令带来的系统变更和恢复 Dock 栏以及 Finder(访达)应用的正常运行。