findを作成しようとしています jpg画像以外のファイルを含むディレクトリのリストを出力しますが、 -execを使用していると思います オプションが壊れています。私の環境はCygwinBashです。
$ find ! -iname "*.JPG$" -exec dirname
find: missing argument to `-exec'
$ find ! -iname "*.JPG$" -exec dirname {}
find: missing argument to `-exec'
$ find ! -iname "*.JPG$" -exec dirname;
find: missing argument to `-exec'
$ find ! -iname "*.JPG$" -exec dirname;
find: missing argument to `-exec'
$ find ! -iname "*.JPG$" -exec dirname {};
find: missing argument to `-exec'
承認された回答:
-exec ;で終了する必要があります または+ 。 ;コード> + に対して、コマンドは見つかったファイル名ごとに1回実行されます。 すべてのファイル名に対してコマンドが1回実行されます。
実例は次のとおりです:
find ! -iname "*.JPG" -exec dirname {} ;
あなたの試みとのいくつかの注目すべき違い:
-
{}の間にはスペースが必要です および; ;コード> シェルのメタ文字であるため、エスケープする必要があります。- @muruが彼の答えで指摘したように、
-iname正規表現ではなく、グロブを取ります