.DS_Store
在 macOS 上,某些目录(嗯,大多数目录)中有一个隐藏文件。
文件的问题.DS_Store
在于rmdir
不要find . -depth 1 -type d -empty -print -delete
删除这样的目录。
我怀疑没有直接的方法来处理这个问题,例如不存在的--ignore_ds_store
选项rmdir
,所以也许有一个解决方法。默认的 macOS shell 是zsh
,所以也许可以使用某些zsh
功能来解决此问题;所以我在问题中添加了“zsh”标签。
.DS_Store
文件可以阻止目录被删除,因为它们导致目录非空。编辑 :
.DS_Store
文件,然后将其删除。请注意,这
-delete
暗示-depth
(进程在它们所在的分支之间离开)。这与 FreeBSD 的扩展无关,
-depth n
如果当前正在处理的文件位于深度,则扩展将返回 truen
。在这里您使用
-depth n
您应该使用的地方-mindepth 1 -maxdepth 1
(最初来自 GNU )在深度 1 处find
停止。find
但这
-depth n
可能有用,因为:这将删除深度 2 处的所有
.DS_store
常规文件以及深度 1 处的空目录文件。因为
-delete
意味着-depth
,.DS_store
在检查目录中的文件的父目录是否为空之前,会先删除其中的文件。这也会产生潜在的不良副作用,即删除
.DS_store
原本不空的目录。使用 zsh,你可以执行以下操作:
但这可能很危险,因为:
rm
,它们将被删除。.DS_Store
文件的类型,所以如果它是一个目录,它和它的所有内容都将被删除。您可以使用类似以下
rm -rf
函数这会比较没那么危险。