从Mac上的命令行删除当前文件夹中的.DS_STORE文件和所有子文件夹

Aar*_*eng 34 linux macos command-line

我知道我可以find . -name ".DS_STORE"用来查找 当前文件夹和所有子文件夹中的所有.DS_STORE文件.但是如何同时从命令行中删除它们呢?我发现来回切换到所有文件夹并逐个删除它真的很烦人.

谢谢你的建议.

cha*_*aos 89

find可以做到这一点.只需添加-delete:

find . -name ".DS_Store" -delete
Run Code Online (Sandbox Code Playgroud)

  • 为了格外小心,我通常会排除这样的目录:`find.-name'.DS_Store'-type f -delete` (7认同)
  • 您需要将文件名大小写修复为 **".DS_Store"**,如果使用 ".DS_STORE",它将不起作用,因为文件名区分大小写。 (3认同)
  • @AmrLotfy 这实际上不是真的,默认的 mac 文件系统不区分大小写 (2认同)

Tej*_*der 14

.DS_Store这是递归删除文件的方法

打开终端 在命令行中,转到所有文件和文件夹所在的文件夹位置:

cd to/your/directory
Run Code Online (Sandbox Code Playgroud)

最后,输入以下命令:

find . -name '.DS_Store' -type f -delete
Run Code Online (Sandbox Code Playgroud)

按回车键

干杯!!


小智 11

干净地做到这一点的最佳方法是使用:

find . -type f \( -name ".DS_Store" -o -name "._.DS_Store" \) -delete -print 2>&1 | grep -v "Permission denied"
Run Code Online (Sandbox Code Playgroud)

这将删除文件,隐藏“权限被拒绝”错误(同时保留其他错误),打印出已删除文件的干净列表。


My *_*ork 11

上面的所有答案都有效,但如果一个人正在使用 mac 并且仍在 mac 上,则会出现一个更大的问题。所描述的行确实删除了所有DS_Store文件,但Finder 会立即重新创建它们,因为这是默认行为。您可以在此处了解这一切是如何运作的。如果您使用的是 Mac,则仅在确实需要时才应删除它们:

\n
\n

如果您没有\xe2\x80\x99t 有特殊原因删除这些.DS_Store 文件(Windows 共享可能是一个充分的原因),\xe2\x80\x99s 最好保留它们\xe2\x80\x9cas 是。\xe2 \x80\x9d \xe2\x80\x99s 删除 .DS_Store 文件没有性能优势。它们是无害的文件,通常不会引起任何问题。请记住,.DS_Store 文件保存您的个性化文件夹设置,例如图标排列和列排序。这就是为什么你通常不想删除它们而是隐藏它们。

\n
\n

如果你真的这样做,还有一种这里没有提到的方法:

\n

sudo find / -name \xe2\x80\x9c.DS_Store\xe2\x80\x9d -depth -exec rm {} \\;

\n


Kir*_*hov 6

find . -name ".DS_Store" -print -delete
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢在这里添加 `-print` (3认同)
  • @kelin呃,如果没有链接,这是一个仅限链接的答案? (2认同)

ken*_*orb 5

您还可以使用扩展通配符 ( **):

rm -v **/.DS_Store
Run Code Online (Sandbox Code Playgroud)

在 zsh、bash 4 和类似的 shell 中(如果未启用,请通过以下方式激活:)shopt -s globstar