在 Mac 上找到 -printf(-printf 未知选项)

在 Mac 上找到 -printf(-printf 未知选项)

我有一段代码,用于获取最近修改文件时间的 MD5 总和

find ./media -type f -printf "%TY-%Tm-%Td %TT %p \n" | sort | more | tail -1 | md5 -r | awk '{print $1}'

我用它来为我的 CDN 文件生成唯一密钥,这背后的逻辑是,如果文件发生变化,密钥也会改变,因此文件将取消缓存并重新加载。

无论如何,当我尝试在我的 Mac 上运行它时,我收到错误“-printf 未知选项”,
我查看了手册页但找不到任何类似的东西,我该如何让它工作呢?

答案1

printf特定于 GNU find 并且find默认情况下在 OS X 上不可用。

安装查找工具在 Mac 上,例如使用自制使用以下命令:

brew install findutils

您也可以选择使用 Macports 或 Fink,它们可能也提供此软件包。

要实际使用 gnu find,您将需要使用,gfind因为find仍然会链接到find位于的OSX /usr/bin/find

Homebrew 带有轻敲对于系统命令与通过 homebrew 安装的命令重复的情况。
只需执行brew tap homebrew/dupes,然后针对上述示例brew install findutils
现在您应该能够使用 homebrews find 命令,而无需通过 明确调用它gfind

答案2

您可以使用-ls标志来获取相同的信息(然后是一些信息),这可能同样适合您的目的。

相关内容