查找错误 - 未知的主要或操作员

时间:2017-07-25 21:19:42

标签: bash unix sh

find /Volumes/COMMON-LIC-PHOTO/STAGING/Completed -type d -maxdepth 2 -iname -iregex '.*_OUTPUT' -exec rsync -rtWv --stats --progress {} /Volumes/COMMON-LIC-PHOTO/ASPERA/ASPERA_STAGING/ \;

上面的代码旨在查看目录完整内的任何子目录,其中包含短语" _OUTPUT" (忽略大小写,因此-iname)在目录名称的末尾,并将它找到的内容复制到新位置 Aspera_Staging 。每当新目录移动到完成时,我就会在launchcd应用程序启动控件触发的.sh中运行代码(这可能是问题的一部分,因为cron似乎非常挑剔)

它的工作时间大约是一半,另一半则根本不起作用。 OUTPUT目录不会被复制。我无法找到一种模式,它几乎看起来是随机的。我在调试日志中注意到它给了我以下错误:

  

查找:。* _ OUTPUT:未知的主要或运营商

我花了几个小时修修补补,试图搞清楚。我已经在这里和其他网站上找到了很多建议,但到目前为止还没有任何效果。它显然与它寻找输出文件夹有关,但我无法找到它的底部。

1 个答案:

答案 0 :(得分:0)

正如评论者注意到的那样,-iname需要一个参数,因此后面的-iregex被理解为该参数,而-iregex的参数被(误)视为运算符,因此你的错误信息。

在您的上下文中,-iname-iregex似乎是多余的,因此您的命令应该是:

find /Volumes/COMMON-LIC-PHOTO/STAGING/Completed -type d -maxdepth 2 -iname '*_OUTPUT' -exec ... \;

或:

find /Volumes/COMMON-LIC-PHOTO/STAGING/Completed -type d -maxdepth 2 -iregex '.*_OUTPUT' -exec ... \;

(请注意-iname-iregex的参数略有不同)