当前位置:  开发笔记 > 运维 > 正文

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

如何解决《找不到选项-printf,现在怎么办?》经验,为你挑选了4个好方法。

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

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

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

ephemient.. 46

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

在这种情况下,FreeBSDfind(1)不支持-printf,所以我不指望OS X的.相反,这应该适用于BSD-ish系统:

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

它会失效了一个GNU用户态的系统上,不过,在那里你会写xargs -0 -r stat -c '%i ',因为xargs(1)stat(1)行为是不同的.



1> ephemient..:

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

在这种情况下,FreeBSDfind(1)不支持-printf,所以我不指望OS X的.相反,这应该适用于BSD-ish系统:

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

它会失效了一个GNU用户态的系统上,不过,在那里你会写xargs -0 -r stat -c '%i ',因为xargs(1)stat(1)行为是不同的.


出于某种原因,这会在OS X 10.8.4上的iTerm2中打印数字而不是字符串.相反,dmckee提出的来自MacPorts的`indutils`包的`gfind`工作正常.

2> dmckee..:

好吧,ephemient和bendin钉牢了原因.

我想补充说,如果你需要,没有什么能阻止你安装GNU find(来自findutils).如果你使用fink有一个findutils包.MacPorts的有它太.


您可以使用[Homebrew](http://brew.sh/)安装它:`brew install findutils`然后使用`gfind`而不是`find`.

3> abkrim..:

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



4> 小智..:

或者,你可以

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

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

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

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

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有