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:未知的主要或运营商
我花了几个小时修修补补,试图搞清楚。我已经在这里和其他网站上找到了很多建议,但到目前为止还没有任何效果。它显然与它寻找输出文件夹有关,但我无法找到它的底部。
答案 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
的参数略有不同)