Macos Mac'find'和Linux'find的区别`

Macos Mac'find'和Linux'find的区别`,macos,shell,unix,find,Macos,Shell,Unix,Find,我继承了一个脚本作为应用程序构建过程的一部分,当我在构建服务器(UbuntuPrecise)上运行它时,它运行良好,但当我在mac上运行它时,我得到了“非法选项--t”。有问题的命令很简单,只需调用find: find -type f -not -path [...] 在测试中,我发现在我的Mac电脑上出现问题的是-type选项。如果我改为跑步: find ./ -type f -not -path [...] 它可以工作,但两者都可以在Linux机器上工作(看起来相当)。因此,我的问题是,

我继承了一个脚本作为应用程序构建过程的一部分,当我在构建服务器(UbuntuPrecise)上运行它时,它运行良好,但当我在mac上运行它时,我得到了“非法选项--t”。有问题的命令很简单,只需调用
find

find -type f -not -path [...]
在测试中,我发现在我的Mac电脑上出现问题的是
-type
选项。如果我改为跑步:

find ./ -type f -not -path [...]
它可以工作,但两者都可以在Linux机器上工作(看起来相当)。因此,我的问题是,OSX(BSD)
find
binary和Linux(GNU?
find
之间是否存在显著差异?我对脚本的修改(在开始时添加
/
路径)是否会破坏我尚未发现的任何内容?

路径(在您的示例中为
/
)这是强制性的查找遵循标准

GNU-find
(Linux上可用的一个)允许路径是可选的。如果未指定,则假定当前目录为路径。在Linux上,ManFind说

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
(注意,路径在
[…]
中指定,表示它是可选的


指定路径是一种很好的做法。

相关:在Linux中,无需提及目录名或路径。默认情况下,它将采用当前目录。在mac os中,指定路径或目录mandotary fieldsOk谢谢,我已更新脚本以包含路径,但我不确定是否缺少一些更基本的语法差异s、 可能还有其他差异,但主要是它们支持的选项和测试的差异——例如,OS X的find支持检查文件创建日期(inode“birth time”)的
-Bmin
-Bnewer
、和
-Btime
测试,这是linux没有的;另一方面,OS X的find不支持
-D debugopts
选项。但是如果相同的find命令在两者上运行时没有错误,它通常会在两者上执行相同的操作。。。