標籤:mac 檔案 finder
如何禁止 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
如何禁止 Mac OS X 在外接裝置上產生 .DS_Store 檔案?以及如何大量刪除 .DS_Store 檔案?