GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum akzeptiert Find „-exec Cp {} Dir +“ nicht?

Ich habe ein Verzeichnis, dir1 die viele Dateien enthält, deren Namen entweder auf .jpg enden oder .png . Ich möchte alle .png kopieren Dateien nach dir2 die leer ist.

Dieser Befehl funktioniert:

find dir1 -name '*.png' -exec cp {} dir2 ;

aber dieser Befehl nicht:

find dir1 -name '*.png' -exec cp {} dir2 +
find: missing argument to `-exec'

Ich habe auch versucht:

find dir1 -name '*.png' -exec cp {} -t dir2 +
find: missing argument to `-exec'

und:

find dir1 -name '*.png' -exec cp {} dir2 +
find: missing argument to `-exec'

Nachdem ich mir diese Seite angesehen hatte, versuchte ich sogar:

find dir1 -name '*.png' -exec cp {} dir2 {} +
find: Only one instance of {} is supported with -exec ... +

Auf dieser Seite steht:

-exec {} + wurde 2005 in [Version] 4.2.12 hinzugefügt

Meine Version von find ist 4.4.2.

Was mache ich falsch?

Akzeptierte Antwort:

Dank „steeldriver“ habe ich herausgefunden, dass die Antwort darin besteht, dass die POSIX-Spezifikation alles verbietet, was zwischen {} steht und + nach -exec .


Linux
  1. Warum ist Cd kein Programm?

  2. Warum zeigt "find" diese Datei nicht an??

  3. Linux – Warum verwenden wir Su – und nicht nur Su?

  4. Warum ist Nullglob kein Standard?

  5. Warum ist es Rm -rf und nicht Rmdir -rf?

Warum „löschen“ den ganzen Bildschirm nicht löschen?

find:Befehl nicht gefunden

Linux, warum kann ich find result nicht an rm weiterleiten?

Warum ist es so schwer, eine Datei in Ubuntu zu finden?

warum funktioniert sftp rmdir nicht?

Warum funktioniert diese Regex nicht unter Linux?