如何停止在Mac上创建.DS_Store文件?

191

我在 Mac 上开发网站,每次创建一个文件夹(或在该文件夹中创建文件)时,都会在该文件夹中创建 .DS_Store 文件。

如何防止创建 .DS_Store 文件?


不喜欢 :) 那我应该用什么? - iWizard
1
@CroiOS 终端 + VIM - Greg
这是一个注释,没有真正的替代方案 - 理论上你可以仅使用终端或其他工具例如编辑器(或者我认为Path Finder作为文件浏览器),但实际上你只能使用这些文件。 - mmmmmm
7
忽略你版本控制系统中的文件。 - millimoose
6
此问题似乎与苹果硬件和软件有关,最适合的地方是Ask Different。我将为您进行翻译。 - Dan J
显示剩余2条评论
8个回答

44
请安装http://asepsis.binaryage.com/并重启您的Mac电脑。

ASEPSIS会将您Mac电脑上的所有.DS_Store文件重定向到/usr/local/.dscage目录下。

之后,您就可以递归删除您的Mac电脑上的所有.DS_Store文件了。

find ~ -name ".DS_Store" -delete
或者
find <your path> -name ".DS_Store" -delete

在每次重大的 Mac 更新之后,您应该重复该过程。


1
注意:对于Mac OSX 10.10,您应该升级Xcode命令行工具,然后在终端中以root或sudo身份手动运行以下命令xcrun --find codesign。手动接受许可条款和协议,然后您可以继续进行asepsis安装。 - Cristian Florescu
1
Asepsis实现了一个系统级守护进程asepsisd,其目的是监视系统范围内的文件夹重命名(或删除)操作,并在前缀文件夹中镜像这些操作。这是写在Asepsis页面上的。是否真的需要递归删除.DS_store文件? - vanguard69
1
请安装asepsis。 请问您能否给我展示一些bash命令,这样我就可以将它们复制粘贴到我的shell中了吗? - samthebest
由于系统完整性保护(SIP),在EL Capitan或更高版本下不会有其他更新(http://asepsis.binaryage.com/#sip)。 - Cristian Florescu
3
在El Capitan下,仍有一种方法可以让Asepsis正常工作。我在这里记录了步骤:http://pixelcog.com/blog/2016/disable-ds_store-in-el-capitan/ - mikegreiling
显示剩余2条评论

41

注意“Asepsis不再在OS X 10.11(El Capitan)及以后版本下进行积极开发和支持。”


这里提供一个综合评估,列出了您的选项。 Asepsis(第二个解决方案)似乎是您需要的内容,它将.DS_Store创建重定向到统一缓存,而不是每个文件夹中都有.


6
如果链接失效,该网站列出的最有可能的两个选项是Asepsis(重定向创建的文件)和DeathToDSStore(防止文件创建,禁用某些Finder功能),这两个选项在本页面的答案中都有描述。其他选项涉及网络驱动器和外部驱动器-这两个选项只解决问题的一部分。 - sage
1
@emmanuel:这个包括了必要的部分:程序名称和它提供的特定功能来解决问题。 - Nathan Tuggy

36

通过使用mach_inject,可以实现该操作。请参阅Death to .DS_Store

我发现覆盖HFSPlusPropertyStore :: FlushChanges()为一个什么都不做的函数,可以成功地阻止在Snow Leopard和Lion中创建.DS_Store文件。

DeathToDSStore源代码

注意:在10.11上,您无法将代码注入系统应用程序中。


请问您能提供一些我可以复制粘贴到我的shell中的bash吗?这个解决方案需要与文献进行相当多的交互。 - samthebest
4
您可以使用DeathToDSStore.app - Parag Bafna
1
有2019年的解决方案吗?因为DeathToDSStore在最新的MacOS上似乎不再起作用了... - jnaklaas
@JKL 我不知道任何可行的解决方案。 - Parag Bafna

33

打开终端。执行以下命令:

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

要么重新启动电脑,要么注销并重新登录用户账户。

更多信息请参见:

https://support.apple.com/zh-cn/HT208209


65
仅适用于网络文件系统。 - David P. Caldwell
2
更新的链接:https://support.apple.com/zh-cn/HT208209 - Felix
2
defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true 对于 USB 驱动器也是一样的。 - thakis

-6
将以下行添加到您的“.profile”文件中。
打开“.profile”文件并复制此行。
find ~/ -name '.DS_Store' -delete

当您打开终端窗口时,它会自动为您删除 .DS_Store 文件。


10
在登录时运行这个会减慢速度,所以我只是创建了这个别名:alias nomore='find ./ -iname .DS_Store -delete' - BenjaminGolder
9
哇,这是一个好主意。不。[/讽刺结束] 想象一下有很多文件夹和许多.DS_Store文件,每次启动shell时都需要浏览所有匹配.DS_Store的文件。我知道这个问题很老,但我认为应该写下这不是一个好主意。 - thonixx
4
所以,“[/讽刺结束]”是让你的讽刺状态停止,还是让它停止并变成打开状态? - Connor
1
这是一个很好的方法,在 Mac 搜索数百 K 的磁盘文件时打发(生产性)时间。 - WestCoastProjects

-10

当您选择系统显示隐藏文件时,此文件开始出现:$defaults write com.apple.finder AppleShowAllFiles TRUE 如果您运行此命令,则会消失: $defaults write com.apple.finder AppleShowAllFiles FALSE 请使用终端


5
问题在问如何停止文件被创建,而不是如何隐藏它们。 - Steve Buzonas

-10

这个函数

find ~/ -name '.DS_Store' -delete

暂时移除了 .DS_Store 文件。但我不确定文件是否会重新出现在 Mac 上。 此外,我注意到一些奇怪的事情,“DS_Store” 在安装 “ATOM” 后开始出现在 Mac 上。因此,请确保在安装第三方软件之前充分扫描它们。 最好


6
.DS_Store文件是由OSX Finder创建的。 - Fran Marzoa
2
问题询问如何停止文件被创建。此答案是删除它们的方法。此外,ATOM并非创建这些文件的应用程序,而是在访问文件夹以存储图标位置、所选文件夹视图、背景图像等时,Finder应用程序会创建它们。 DS_Store简称为桌面服务。 - Steve Buzonas

-15
如果您想让.DS_Store文件变为不可见(它们仍然存在但看不到),请在“终端”窗口中运行以下命令:
defaults write com.apple.finder AppleShowAllFiles FALSE; killall Finder

这将把系统默认设置为停止在桌面和其他地方显示这些文件。它还将重新启动Finder以使此更改可见(特别是在您的桌面上)。


8
那并没有回答被问出的问题。 - nobody
隐藏显示隐藏文件并不会删除创建.DS_Store文件,这也是被问到的问题。这是一个糟糕的答案。 - MattBoothDev
1
问题是如何停止文件被创建。这个解决方案只在Finder中隐藏它们(和其他文件)。 - Steve Buzonas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接