GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi Find n'accepte-t-il pas '-exec Cp {} Dir +' ?

J'ai un répertoire, dir1 qui contient de nombreux fichiers dont les noms se terminent par .jpg ou .png . Je veux copier tous les .png fichiers dans dir2 qui est vide.

Cette commande fonctionne :

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

mais cette commande ne :

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

J'ai aussi essayé :

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

et :

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

Après avoir regardé cette page, j'ai même essayé :

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

Cette page indique que :

-exec {} + a été ajouté dans [version] 4.2.12 en 2005

Ma version de find est 4.4.2.

Qu'est-ce que je fais de mal ?

Réponse acceptée :

Grâce à 'steeldriver', j'ai compris que la réponse est parce que la spécification POSIX interdit quoi que ce soit d'être entre {} et + après -exec .


Linux
  1. Pourquoi ne "trouve"-t-il pas ce fichier ? ?

  2. Pourquoi Nullglob n'est-il pas par défaut ?

  3. Pourquoi un long délai après la commande introuvable ?

  4. Pourquoi `exit &` ne fonctionne pas ?

  5. pourquoi sftp rmdir ne fonctionne-t-il pas?

Pourquoi "effacer" ne pas effacer tout l'écran ?

Linux pourquoi ne puis-je pas diriger le résultat vers rm?

Pourquoi est-il si difficile de trouver un fichier dans Ubuntu ?

Pourquoi utilisons-nous su - et pas seulement su ?

pourquoi supprimer l'historique bash n'est pas suffisant?

Pourquoi ne pas bloquer ICMP ?