我正在使用下面的腳本作爲清理腳本。查找部分返回正確的結果,但由於某些原因,-exec部分不能運行。爲什麼不運行--exec運行?
find /users/rhysparker/downloads/ -maxdepth 1 -iname \*.pkg -o -iname \*.app -o -iname \*.dmg -exec mv {} /folder/location/ \;
任何幫助,將不勝感激。
我正在使用下面的腳本作爲清理腳本。查找部分返回正確的結果,但由於某些原因,-exec部分不能運行。爲什麼不運行--exec運行?
find /users/rhysparker/downloads/ -maxdepth 1 -iname \*.pkg -o -iname \*.app -o -iname \*.dmg -exec mv {} /folder/location/ \;
任何幫助,將不勝感激。
-o
操作具有低優先級,因此您的-exec
僅限於*.dmg
測試。使用括號將語句正確分組。 (並引用它們以使shell將它們傳遞給find
)。
find /users/rhysparker/downloads/ -maxdepth 1 \(-iname \*.pkg -o -iname \*.app -o -iname \*.dmg \) -exec mv {} /folder/location/ \;
在expr1 -o expr2
,如果expr1
是真,expr2
將不進行評估。
在您的命令:
-iname \*.pkg OR
-iname \*.app OR
-iname \*.dmg AND -exec mv {} /folder/location/ \;
如果前兩個條件之一爲真,最後將無法進行評估。所以,你必須使用()
改變EXPR:現在
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
進行評估。
Alan再次襲擊。感謝那。我應該想到這一點。乾杯。 – Rhys 2012-08-01 01:04:01