0

以下のスクリプトをクリーンアップスクリプトとして使用しています。findセクションは正しい結果を返しますが、何らかの理由で-execセクションが実行されません。

find /users/rhysparker/downloads/ -maxdepth 1 -iname \*.pkg -o -iname \*.app -o -iname \*.dmg -exec mv {} /folder/location/ \;

どんな助けでもいただければ幸いです。

4

2 に答える 2

3

操作の-o優先順位は低いため-exec、テストにのみバインドされます*.dmg。ステートメントを適切にグループ化するには、括弧を使用します。(そして、シェルがそれらをに渡すようにそれらを引用しますfind)。

find /users/rhysparker/downloads/ -maxdepth 1 \( -iname \*.pkg -o -iname \*.app -o -iname \*.dmg \) -exec mv {} /folder/location/ \;
于 2012-08-01T00:54:51.930 に答える
0

で、 trueの場合、はexpr1 -o expr2評価されません。expr1expr2

あなたのコマンドで:

-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、ファイルが見つかったときにが評価されるようになります。

于 2012-08-01T01:11:31.713 に答える