以下のスクリプトをクリーンアップスクリプトとして使用しています。findセクションは正しい結果を返しますが、何らかの理由で-execセクションが実行されません。
find /users/rhysparker/downloads/ -maxdepth 1 -iname \*.pkg -o -iname \*.app -o -iname \*.dmg -exec mv {} /folder/location/ \;
どんな助けでもいただければ幸いです。
操作の-o
優先順位は低いため-exec
、テストにのみバインドされます*.dmg
。ステートメントを適切にグループ化するには、括弧を使用します。(そして、シェルがそれらをに渡すようにそれらを引用しますfind
)。
find /users/rhysparker/downloads/ -maxdepth 1 \( -iname \*.pkg -o -iname \*.app -o -iname \*.dmg \) -exec mv {} /folder/location/ \;
で、 trueの場合、はexpr1 -o expr2
評価されません。expr1
expr2
あなたのコマンドで:
-iname \*.pkg OR
-iname \*.app OR
-iname \*.dmg AND -exec mv {} /folder/location/ \;
最初の2つのうちの1つが真の場合、最後の2つは評価されません。したがって()
、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
、ファイルが見つかったときにが評価されるようになります。