如何禁止 mac os x 在外接裝置上生成 .ds_store 檔案?以及如何批量删除 .ds_store 檔案?
背景資訊
.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 檔案!!!
實作原理
mac os x實作了一個私有的系統架構 desktopservicespriv,這個架構負責建立和操作 .ds_store 檔案,finder 以及其他的應用程式也使用這個架構,desktopservicespriv 使>用标準的 libc 調用來操作 .ds_store 檔案,于是通過對 desktopservicespri 進行封裝,在建立和操作 .ds_store 檔案時,加上指定的目錄作為字首,即可将在每一個目錄下>建立一個 .ds_store 檔案的操作重定向到某一個特定的目錄中去了。
檔案目錄需要簡潔,這樣世界才清靜啊!
相關參考資料連結:
<a target="_blank" href="http://support.apple.com/kb/ht1629">http://support.apple.com/kb/ht1629</a>