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

Smu*_*dge 6 find macos

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

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

我用它来为我的 CDN 文件生成唯一的键,这背后的逻辑是,如果文件更改了键的更改,则文件将被取消缓存并重新加载。

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

Dan*_*eck 19

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

在您的 Mac 上安装findutils,例如使用以下命令使用Homebrew

brew install findutils
Run Code Online (Sandbox Code Playgroud)

你也可以使用 Macports 或 Fink,他们可能也有这个包。

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

Homebrew 带有一个水龙头,用于通过 homebrew 安装的命令复制系统命令的情况。
简单地做brew tap homebrew/dupes,然后为上面的例子brew install findutils
现在您应该能够使用 homebrews find 命令而无需通过gfind.

  • ...一旦你安装了 findutils,安装的命令就会被命名为 gfind (gnu find) (3认同)