Mac`find`和Linux`find`之间的区别

时间:2013-07-09 13:01:56

标签: macos shell unix find

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

find -type f -not -path [...]

在测试中,我发现-type选项在我的Mac上出现问题。如果我改为运行:

find ./ -type f -not -path [...]

它有效,但在Linux机器上都可以工作(看似相同)。因此我的问题是,OSX(BSD)find二进制文件和Linux(GNU?)find之间是否存在显着差异,我将对脚本进行修改(在{1}}处添加./路径开始)打破我还没有发现的任何东西?

1 个答案:

答案 0 :(得分:12)

standard强制要求路径(示例中为./)。 MacOS上的find遵循标准。

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

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

(请注意,路径在[...]内指定,表示它是可选的。

指定路径是一个好习惯。