Bash 为什么不让执行官跑?
我使用下面的脚本作为清理脚本。find部分返回正确的结果,但是由于某些原因,-exec部分没有运行Bash 为什么不让执行官跑?,bash,shell,unix,Bash,Shell,Unix,我使用下面的脚本作为清理脚本。find部分返回正确的结果,但是由于某些原因,-exec部分没有运行 find /users/rhysparker/downloads/ -maxdepth 1 -iname \*.pkg -o -iname \*.app -o -iname \*.dmg -exec mv {} /folder/location/ \; 任何帮助都将不胜感激。操作的-o优先级较低,因此您的-exec仅绑定到*.dmg测试。使用括号将语句正确分组。(并引用它们,以便shell将它们
find /users/rhysparker/downloads/ -maxdepth 1 -iname \*.pkg -o -iname \*.app -o -iname \*.dmg -exec mv {} /folder/location/ \;
任何帮助都将不胜感激。操作的
-o
优先级较低,因此您的-exec
仅绑定到*.dmg
测试。使用括号将语句正确分组。(并引用它们,以便shell将它们传递到find
)
-o
操作的优先级较低,因此您的-exec
仅绑定到*.dmg
测试。使用括号将语句正确分组。(并引用它们,以便shell将它们传递到find
)
在
expr1-o expr2
中,如果expr1
为真,则不会计算expr2
在您的命令中:
-iname \*.pkg OR
-iname \*.app OR
-iname \*.dmg AND -exec mv {} /folder/location/ \;
如果前两项中的一项为真,则不会计算最后一项。因此,您必须使用()
来更改表达式:
find /users/rhysparker/downloads/ -maxdepth 1 \( -iname \*.pkg -o -iname \*.app -o -iname \*.dmg \) -exec mv {} /folder/location/ \;
现在,它变成:
(-iname \*.pkg OR -iname \*.app OR -iname \*.dmg) AND
-exec mv {} /folder/location/ \;
这将确保在找到文件时对
-exec
进行求值。在expr1-o expr2
中,如果expr1
为true,则不会对expr2
进行求值
在您的命令中:
-iname \*.pkg OR
-iname \*.app OR
-iname \*.dmg AND -exec mv {} /folder/location/ \;
如果前两项中的一项为真,则不会计算最后一项。因此,您必须使用()
来更改表达式:
find /users/rhysparker/downloads/ -maxdepth 1 \( -iname \*.pkg -o -iname \*.app -o -iname \*.dmg \) -exec mv {} /folder/location/ \;
现在,它变成:
(-iname \*.pkg OR -iname \*.app OR -iname \*.dmg) AND
-exec mv {} /folder/location/ \;
这将确保在找到文件时对
-exec
进行评估。。谢谢你。我应该想到这一点。干杯,艾伦又罢工了。谢谢你。我应该想到这一点。干杯