找不到选项-printf,现在怎么办?

时间:2009-04-15 17:25:44

标签: macos find printf

我还没有找到Mac的查找没有-printf选项的原因。 Apple通常决定采用与其他命令不正交的选项吗?

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

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

5 个答案:

答案 0 :(得分:44)

并不是说Apple取消了选项,而是OS X的UNIX基础主要是从FreeBSD派生出来的(其中很多部分),其中很多部分都可以追溯到原来的UNIX ......而不是GNU实用程序。 - 添加了许多功能的实现。

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

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

但是在GNU-userland系统上会失败,因为xargs -0 -r stat -c '%i 'xargs(1)行为不同,你写stat(1)

答案 1 :(得分:18)

好吧,ephemientbendin确定了原因。

我想补充一点,如果你需要,没有什么能阻止你安装GNU find(来自findutils)。如果您使用fink,则会有findutils packageMacPortstoo

答案 2 :(得分:14)

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

答案 3 :(得分:6)

或者,您可以

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

当然,这不是你在linux上做同样的事情,而是适用于MacOS

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

在linux上产生类似(不相同但接近)的输出。

答案 4 :(得分:3)

Ubuntu附带GNU version of find,它比Mac OS X的查找功能更强大,属于BSD血统。

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