Concaténer tous les fichiers de manière récursive, en ignorant une extension de fichier

Je veux créer un fichier concaténé qui ajoute tous les fichiers sauf ceux qui se terminent par .XYZ à partir d’un répertoire (récursif dans les sous-répertoires).

J’ai essayé ceci mais ça ne marche pas:

find . -type f | grep -v *.XYZ -exec cat {} \; > /tmp/alldata.txt 

Cela fonctionne mais ne parvient pas à exclure les fichiers se terminant par “.XYZ”:

  find . -type f -exec cat {} \; > /tmp/alldata.txt 

 find . -type f -not -name "*.XYZ" -exec cat {} \; > /tmp/alldata.txt 

Les versions plus récentes de gnu find incluent -not ce qui annule l’argument suivant. Dans ce cas, vous pouvez combiner cela avec l’argument -name pour obtenir ce que vous voulez sans appeler grep -v .