如何禁止 Mac OS X 在外接设备上生成 .DS_Store 文件?以及如何批量删除 .DS_Store 文件?
2014-09-15 18:07
851 查看
如何禁止 Mac OS X 在外接设备上生成 .DS_Store 文件?以及如何批量删除 .DS_Store 文件?
http://www.java2class.net/bbs/viewthread.php?tid=254
背景信息
.DS_Store文件(Desktop Services Store)是一个隐藏的文件,在每一个目录下都有,它存放着这个文件目录的一些特定属性信息 Metadata,比如图标大小、位置、背景图片等属性;有点儿类似于 Windows 操作系统上的 Thumbs.db 、Desktop.ini 文件。
如果在 Mac OS X 没有打开隐藏文件进行显示的话,就在 Finder 中看不到这个 .DS_Store 文件,不会觉得碍事。但是通常在与其他机器或USB文件交换到其他操作系统时,如在Windows操作系统下,同样也打开显示隐藏文件时,这时就会对这些隐藏文件感觉到特别的多余,以及占用空间之类的XYZ;以及对文件进行压缩时,会包含在压缩文件里之类的不爽,对外接设备或SMB、AFP远程网络连接之类的。
解决方法
进入Terminal,然后执行 defaults write com.apple.desktopservices DSDontWriteNetworkStores true ,然后注销再登录或直接重启 Mac OS X;
机器上有多个用户,则所有用户都如此操作一次;或者将新生成的 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-to-recursively-remove-ds_store-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
背景信息
.DS_Store文件(Desktop Services Store)是一个隐藏的文件,在每一个目录下都有,它存放着这个文件目录的一些特定属性信息 Metadata,比如图标大小、位置、背景图片等属性;有点儿类似于 Windows 操作系统上的 Thumbs.db 、Desktop.ini 文件。
如果在 Mac OS X 没有打开隐藏文件进行显示的话,就在 Finder 中看不到这个 .DS_Store 文件,不会觉得碍事。但是通常在与其他机器或USB文件交换到其他操作系统时,如在Windows操作系统下,同样也打开显示隐藏文件时,这时就会对这些隐藏文件感觉到特别的多余,以及占用空间之类的XYZ;以及对文件进行压缩时,会包含在压缩文件里之类的不爽,对外接设备或SMB、AFP远程网络连接之类的。
解决方法
进入Terminal,然后执行 defaults write com.apple.desktopservices DSDontWriteNetworkStores true ,然后注销再登录或直接重启 Mac OS X;
机器上有多个用户,则所有用户都如此操作一次;或者将新生成的 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-to-recursively-remove-ds_store-files-on-mac-os-x/
http://www.chrisnovoa.com/os-x-lion-ds_store-disabling/
http://support.apple.com/kb/HT1629
相关文章推荐
- 如何禁止 Mac OS X 在外接设备上生成 .DS_Store 文件?以及如何批量删除 .DS_Store 文件?
- 如何禁止 Mac OS X 在外接设备上生成 .DS_Store 文件?以及如何批量删除 .DS_Store 文件?
- mac 禁止生成 .ds_store文件
- .DS_Store 文件是什么?Mac下面如何禁止.DS_Store生成
- Mac下如何隐藏.DS_Store文件的方法
- mac 禁止.DS_store 生成
- 如何删除Mac系统里面的所有 DS_Store 文件呢?
- Mac OS X 显示隐藏文件.DS_Store
- 如何删除Mac系统里面的所有 DS_Store 文件
- Mac教程:如何删除.DS_Store文件且不再生
- Mac OS X中打zip包时去除.DS_Store等指定文件
- mac系统下恢复和禁止.DS_store的生成
- Mac下如何隐藏.DS_Store文件的方法
- 禁止自己的MAC创建.DS_Store 文件
- mac系统如何显示和隐藏文件.DS_Store
- C++文件如何在linux下生成动态库So,以及如何使用这个动态库
- java中如何使用asm动态的生成或修改一个class文件以及asm的架构思想
- 如何从内核模式设备驱动程序中打开一个文件以及如何读取或写入文件(来自微软官网)
- 防止 7-Zip 生成的 ZIP 文件在 Mac OS X 下出现乱码
- 如何将XSD文件以及引入import的文件生成相应的C#类。