2014-10-26 28 views
0

的出於某種原因,下面的命令只移動了一定量的文件,而不是所有的人都到指定的位置:UNIX管理:找到-exec mv命令僅移動一定量的文件

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

是什麼問題的原因是什麼?

+0

應該有在文件中有一些相似移動。他們在同一個目錄裏面嗎? – 2014-10-26 16:49:07

回答

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具有比-or更高的優先級,相當於

find -cond1 -or -cond2 -or '(' -cond3 -and -action ')' 
+0

好吧,它幫助!謝謝! – VegTo91 2014-10-26 19:33:46