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
正規表現ではなく、グロブを取ります