Unix管理:使用-exec mv查找命令只会移动一定数量的文件

时间:2014-10-26 16:44:40

标签: unix find exec

由于某种原因,下面的命令只会将一定数量的文件而不是所有文件移动到指定的位置:

find /directory1 -iname "*name1*" -or -iname "*name2*" -or -iname "*name3*" \
    -or -iname "*name4*" -exec mv -v {} /directory2  \;

问题的原因是什么?

1 个答案:

答案 0 :(得分:3)

您需要在-or条件周围加上括号,以便-exec适用于所有条件,而不仅仅是最后一个。

find /directory1 '(' -iname "*name1*" -or -iname "*name2*" -or -iname "*name3*" \
    -or -iname "*name4*" ')' -exec mv -v {} /directory2  \;

条件和行动之间存在隐含的-and。当你写

find -cond1 -or -cond2 -or -cond3 -action

它相当于

find -cond1 -or -cond2 -or -cond3 -and -action

优先级高于-and的{​​{1}}等同于

-or