如何禁止 Mac OS X 在外接設備上生成 .DS_Store 文件?以及如何批量刪除 .DS_Store 文件?

如何禁止 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 文件的操做重定向到某一個特定的目錄中去了。

php

文件目錄須要簡潔,這樣世界才清靜啊!java



相關參考資料連接:
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
網絡

相關文章
相關標籤/搜索