关于macos:find缺少-printf选项,现在呢?

find lacks the option -printf, now what?

我还没有找到Mac的查找没有选项-printf的原因。
苹果通常决定删除与其他命令不正交的选项?

在没有coreutils的Mac中,如何获得与以下命令相同的结果?

1
2
find . -printf"%i \
"         // command in Ubuntu

不是Apple删除了选项,而是OS X的UNIX基础(从回路中)主要从FreeBSD派生而来,其许多部分都可以追溯到原始的UNIX ...与GNU实用程序相对,后者被重新-具有许多功能的实现。

在这种情况下,FreeBSD的find(1)不支持-printf,因此我不希望OS X也支持。相反,这应该在BSD-ish系统上起作用:

1
find . -print0 | xargs -0 stat -f '%i '

在GNU用户系统上,由于xargs(1)stat(1)的行为不同,因此您在其中编写xargs -0 -r stat -c '%i '会失败。


MAc OS X查找二进制文件不支持-printf命令。在Mac上安装brew install findutils。使用-printf选项安装gfind


嗯,短暂而又bend脚的原因。

我要补充一点,如果需要的话,没有什么可以阻止您安装GNU find(来自findutils)。如果使用fink,则有一个findutils软件包。 MacPorts也有。


或者,您可以

1
find . -type f -exec stat -f"%z %N" {} \\;

当然,这不是在Linux上执行相同操作的方法,但适用于MacOS

1
find . -type f -exec stat -c"%s %N" {} \\;

在linux上产生类似的输出(不相同,但关闭)。


Ubuntu附带了GNU版本的find,它比Mac OS X的find(具有BSD谱系)具有更多功能。

实际上,大多数Ubuntu的用户界面实用程序都来自GNU项目。 (因此,您有时会听到基于Linux的系统,称为" GNU / Linux"。)