OS X Find 和 RM 递归地通过名称中带有空格的文件夹?

Pre*_*ton 7 terminal.app macos

WD My Cloud NAS 在没有事先通知或询问我的情况下,将隐藏的 .wdmc 文件夹添加到每个带有 jpg 的文件夹中。我的 NAS 驱动器上有数百个。这与他们的媒体服务器有关,但我从未打开过该功能。这些文件夹中塞满了使我的备份和磁盘空间使用量膨胀的数据。它们必须被删除,但它们遍布磁盘,有时甚至深入目录结构。

在 Superuser.com 上,我找到了这个建议,在终端中运行它,它似乎花了整晚的时间删除这些文件夹。但是,它没有删除目标文件夹或其中的数据。

$ find . -type d -name '.wdmc' -print -exec echo rm -rf {} \; 
Run Code Online (Sandbox Code Playgroud)

我也发现了这个,但它只适用于名称中没有空格的文件夹:

rm -rf `find . -type d -name .wdmc`
Run Code Online (Sandbox Code Playgroud)

不知何故在路径中必须有一种方法来转义文件夹名称中的空格?

hak*_*aze 7

版本 2(管道通过xargs

man页面中挖掘find参见此处的示例)后,我找到了一个使用该print0选项并将xargs目录名称通过管道传输到的解决方案rm

$ find . -type d -name '.wdmc' -print0 | xargs -0 rm -rf
Run Code Online (Sandbox Code Playgroud)

这也适用于包含空格或其他非 ASCII 字符的目录名称。

版本 1(仅适用于空的 .wdmc 目录)

或者,您可以使用以下-delete选项find

$ find . -type d -name '.wdmc' -delete
Run Code Online (Sandbox Code Playgroud)