Macos Mac'find'和Linux'find的区别`
我继承了一个脚本作为应用程序构建过程的一部分,当我在构建服务器(UbuntuPrecise)上运行它时,它运行良好,但当我在mac上运行它时,我得到了“非法选项--t”。有问题的命令很简单,只需调用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机器上工作(看起来相当)。因此,我的问题是,
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命令在两者上运行时没有错误,它通常会在两者上执行相同的操作。。。