如何禁止Mac OS X在外接设备上生成.DS_Store文件以及批量删除?

背景信息
.DS_Store文件(Desktop Services Store)是一个隐藏的文件,在每一个目录下都有。它存放着这个目录的一些特定属性信息,比如图标大小、位置、背景图片等属性。有点儿类似于 Windows 操作系统上的 Thumbs.db、Desktop.ini 文件。

如果没有打开显示隐藏文件的话,在 Finder 中就看不到 .DS_Store 文件,倒也不会觉得碍事。但若是使用USB设备交换文件, .DS_Store 文件就会被一起写入USB设备,在打开了显示隐藏文件的操作系统下就会看到他们,这时就会觉得这些隐藏文件特别的多余;对文件进行压缩时,他们也会包含在压缩文件里。

解决方法
进入Terminal,然后执行 defaults write com.apple.desktopservices DSDontWriteNetworkStores true ,然后注销再登录或直接重启 Mac;
机器上有多个用户,则所有用户都如此操作一次。或者将新生成的 com.apple.desktopservices.plist 文件拷贝到各个用户的 ~/Library/Preferences 目录下即可。

虽然这个方法可以禁止 Mac OS X 在外接设备上再次生成 .DS_Store 文件,但是目前已经存在的文件却无法直接删除,只能手工批量删除,执行如下命令即可:
find / -name “.DS_Store” -type f -delete

但是以上命令仍无法禁止在本机文件系统上生成 .DS_Store 文件!!!

针对这个情况可以使用 Asepsis : http://asepsis.binaryage.com ,它将创建的 .DS_Store 文件重新定向到另一个指定目录中去,从而阻止了在每一个文件目录中都生成 .DS_Store 文件,默认目录为 /usr/local/.dscage ,通过执行 asepsisctl clean 命令可以将重定向的目录中所生的文件清空。

实现原理
Mac OS X实现了一个私有的系统框架 DesktopServicesPriv,这个框架负责创建和操作 .DS_Store 文件,Finder 以及其他的应用程序也使用这个框架,DesktopServicesPriv 使用标准的 libc 来调用操作 .DS_Store 文件,于是通过对 DesktopServicesPri 进行封装,在创建和操作 .DS_Store 文件时,加上指定的目录作为前缀,即可将在每一个目录下创建 .DS_Store 文件的操作重新定向到某一个特定的目录中去了。

文件目录需要简洁,这样世界才清静啊!

相关参考资料链接:
http://en.wikipedia.org/wiki/.DS_Store
http://danilo.ariadoss.com/how-t … -files-on-mac-os-x/
http://www.chrisnovoa.com/os-x-lion-ds_store-disabling/
http://support.apple.com/kb/HT1629

转载自http://www.java2class.net/bbs/viewthread.php?tid=254
原文真是狗屁不通修订的我好累好心塞

头像

作者: LeadersFirst

没理想 没抱负 不知道生活为了什么 也许就是为了生活罢

发表评论

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

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据