我没有找到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)
行为是不同的.
这并不是说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)
行为是不同的.
好吧,ephemient和bendin钉牢了原因.
我想补充说,如果你需要,没有什么能阻止你安装GNU find(来自findutils).如果你使用fink有一个findutils
包.MacPorts的有它太.
MAc OS X查找二进制文件不支持-printf命令.brew install findutils
在Mac上安装.这用-printf选项安装gfind.
或者,你可以
find . -type f -exec stat -f "%z %N" {} \;
当然,这不是你在linux上做同样的事情,而是适用于MacOS
find . -type f -exec stat -c "%s %N" {} \;
在linux上产生类似(不相同但接近)的输出.