如何删除 Mac 目录下的 .DS_Store 文件

本文简要介绍了 macOS 系统中 .DS_Store 文件的作用以及如何快速删除当前目录及其所有子目录中的 .DS_Store 文件。

DS_Store 文件

DS_Store (Desktop Services Store) 文件是 macOS 系统中 Finder 文件管理器自动生成的,用来存放文件夹 视图 相关配置的文件。

当用户打开某文件夹时,Finder 依此文件决定如何显示文件夹中的各种元素,如:窗口的位置和大小、背景图片、文件列表的呈现方式(图标、列表、分栏等)、排序方式、显示的图标位置等。 DS_Store 文件一般都会带有前缀 ..DS_Store,带有该前缀的文件或文件夹在 Finder 中默认隐藏不显示。

每当我们通过 Finder 访问某个文件夹时,Finder 会首先尝试读取该文件夹下的 .DS_Store 文件。 若该文件存在,Finder 会依其内容确定显示的视图;若不存在,Finder 会自动创建 .DS_Store 文件。

每个文件夹下都存在决定该文件夹展示视图的 .DS_Store 文件,其中的视图参数可以不同。 因此当我们打开某文件夹中的子文件夹时,可能发现 Finder 的视图发生了变化,这是因为我们曾经手动更改过该子文件夹的视图,其 .DS_Store 中的设置与父文件夹不同。

如何删除

如上所述,.DS_Store 中只记录了该文件夹中内容的呈现方式,因此删除 .DS_Store 文件并不会对文件夹中的内容有任何影响,只会使 Finder 以默认视图打开该文件夹。

通常情况下我们并不需要在意 .DS_Store 文件,除非:

  • 清除文件夹的视图设置;
  • 文件夹内容显示异常,如图标错位、找不到某个文件等;
  • 将 macOS 系统中的文件传输至其他系统,如 Windows 或 Linux 系统;
  • 将文件资源打包进项目,如将资源目录部署至网站服务器。若不删除 .DS_Store 文件,会导致目录结构泄露,从而暴露后台管理页面以及数据库文件等。
1
2
3
4
5
# 仅删除当前目录下的 .DS_Store
$ rm .DS_Store

# 删除当前目录及其所有子目录下的所有 .DS_Store
$ find . -name '.DS_Store' -type f -delete

find 参数简介:

  • -name <文件名>:按文件名查找。
  • -type <文件类型>:按文件类型查找。
    • b:目录(directory)
    • f:文件(regular file)
    • l:链接(symbolic link)
  • -delete:删除查找到的文件。

其他操作

一般情况下,推荐仅在真正需要的时候删除相关目录下的 .DS_Store 文件。

警告
以下操作仅作为记录,笔者未运行相关代码操作,不对任何后果负责。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 删除 macOS 系统中所有 .DS_Store 文件
$ sudo find / -name '.DS_Store' -depth -exec rm {} \;

# 定时自动删除 macOS 系统中所有 .DS_Store 文件
$ sudo crontab -e
# 添加如下内容,格式为:<分钟> <小时> <日期> <月份> <星期> <待执行命令>
15 1 * * * root find / -name '.DS_Store' -depth -exec rm {} \;
# 系统会在每天 1:15 自动执行命令

# 禁止 Finder 在共享的网路驱动上自动创建 .DS_Store 文件
defaults write com.apple.desktopservices DSDontWriteNetworkStores true

0%