我有一段代码,用于获取最近修改文件时间的 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 上不可用。
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
标志来获取相同的信息(然后是一些信息),这可能同样适合您的目的。