如何从 Windows 机器上的目录中递归删除所有 .DS_STORE 文件?

如何从 Windows 机器上的目录中递归删除所有 .DS_STORE 文件?

我解压了一个.zip在 Mac 上压缩的文件,发现压缩文件包含了所有的.DS_STORE元目录文件(我认为这是为了加快聚光灯搜索的速度,但与此无关?)。

是否有一个可以从 Windows PowerShell 或简单的 python 脚本执行的单行程序,通过递归删除这些文件来清理此文件夹?

FIND: Parameter format not correct我使用时出现错误:

find . -name '*.DS_Store' -type f -delete

答案1

在 PowerShell 中执行以下操作:

cd MyFolder

Get-ChildItem -recurse -filter .DS_STORE | Remove-Item -WhatIf

当您指定 时-WhatIf,PowerShell 将不会进行任何更改。相反,它会告诉您它会做什么。当您对它将要执行的操作感到满意时,您可以删除-WhatIf。(执行递归删除时务必小心。您不想删除错误的内容。)

答案2

find在我看来,您在示例中使用的语法更适合 Mac OS X 或 Linux/Unix 设置,而不是 Windows 设置。相反,也许可以使用del在 Windows 中像这样的命令正如这里解释的那样

del /s /q /f /a:h .DS_STORE

答案3

客观的:删除 Windows 下当前目录和所有子目录中出现的“.DS_Store”和“._.DS_Store”。

Windows“查找”实用程序的工作方式与Linux“查找”不同。我强烈建议您使用Cygwin(可用这里)。Cygwin 提供 Linux 实用程序,并使其在 Windows 下可用。一旦您拥有 Cygwin,您就可以导航到您选择的基本目录:

例如:要导航到 c:\projects,您需要运行:

cd /cygdrive/c/projects

进入您选择的文件夹/目录后,您可以运行以下两个命令。

# First let's find all occurrences of both ".DS_Store" and "._.DS_Store" (recursive)     
find . -type f \( -name ".DS_Store" -o -name "._.DS_Store" \) -print0

# After we have ensured that the results are good then let's rerun and pipe it to the rm (remove) command via xargs
find . -type f \( -name ".DS_Store" -o -name "._.DS_Store" \) -print0 | xargs -0 rm

这现在应该会从 Windows 目录中删除这两个文件的所有出现位置(递归)

干杯

相关内容