找不到选项-printf,现在怎么办?
我没有find为什么Mac的发现没有select-printf的原因。 苹果通常决定采取与其他命令不正交的选项?
在没有coreutils的Mac中,如何达到与以下命令相同的结果 ?
find . -printf "%i \n" // command in Ubuntu
这并不是说苹果公司删除了选项,而是OS X的UNIX基础大部分是从FreeBSD衍生出来的,其中许多部分可以追溯到原始的UNIX …而不是GNU实用程序,添加了许多function。
在这种情况下, FreeBSD的find(1)
不支持-printf
,所以我不希望OS X也可以。 相反,这应该在BSD-ish系统上工作:
find . -print0 | xargs -0 stat -f '%i '
然而,在GNU用户空间系统上,它将会失败,因为xargs(1)
和stat(1)
行为是不同的,所以在这里写xargs -0 -r stat -c '%i '
。
那么, ephemient和bendin钉住了事业。
我想补充一句,如果你需要的话,没有什么能阻止你安装GNU find(从findutils )。 如果你使用fink,有一个findutils
包 。 MacPorts也有。
MAc OS X查找二进制文件不支持-printf命令。 在你的mac上安装brew install findutils
。 用-printf选项安装gfind。
Ubuntu附带的GNU版本的查找 ,这是比Mac OS X的发现,这是BSD谱系function更多。
实际上,Ubuntu的大部分用户用地都来自GNU项目。 (因此,您有时会听到基于Linux的系统被称为“GNU / Linux”)。
或者,你可以
find . -type f -exec stat -f "%z %N" {} \;
当然,这不是你将如何在Linux上做同样的事情,但适用于MacOS
find . -type f -exec stat -c "%s %N" {} \;
在linux上产生类似(不相同,但是接近)的输出。