Et si vous copiez d'abord avec
cp -r /old/folder /new/folder
puis allez dans le nouveau dossier et exécutez
find . -type f ! -iname "*.txt" -delete
ou simplement
cp -r /old/folder /new/folder && find . -type f ! -iname "*.txt" -delete
Edit : ok vous voulez une commande qui filtre (je n'ai pas testé cela parce que mon système n'a pas la commande cpio
). Voici où je l'ai trouvé : http://www.gnu.org/software/findutils/manual/html_mono/find.html#Copying-A-Subset-of-Files
find . -name "*.txt" -print0 |
cpio -pmd0 /dest-dir
S'il vous plaît teste d'abord ça, parce que je ne l'ai pas encore essayé. Si quelqu'un pouvait vérifier, ce serait formidable.