Ich versuche find
zu machen Drucken Sie eine Liste von Verzeichnissen aus, die andere Dateien als JPG-Bilder enthalten, aber ich denke, meine Verwendung der -exec
Option ist kaputt. Meine Umgebung ist Cygwin Bash.
$ 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'
Akzeptierte Antwort:
Ein -exec
muss mit einem ;
abgeschlossen werden oder ein +
. Der ;
bewirkt, dass der Befehl einmal pro gefundenem Dateinamen ausgeführt wird, während +
bewirkt, dass der Befehl einmal für alle Dateinamen ausgeführt wird.
Hier ist ein funktionierendes Beispiel:
find ! -iname "*.JPG" -exec dirname {} ;
Einige bemerkenswerte Unterschiede zu Ihren Versuchen:
- Zwischen
{}
muss ein Leerzeichen stehen und;
- Der
;
muss maskiert werden, da es sich um ein Shell-Metazeichen handelt. - Wie @muru in seiner Antwort betonte,
-iname
nimmt einen Glob, keinen regulären Ausdruck