Rechercher une commande avec plusieurs extensions de fichier

Je regarde à travers de nombreux sous-répertoires et trouve tous les fichiers se terminant par .JPG .jpg et .png et en les copiant dans un répertoire séparé, mais juste maintenant sa seule conclusion .JPG

Quelqu’un pourrait-il expliquer ce que je fais mal?

find /root/TEST/Images -name '*.png' -o -name '*.jpg' -o -name '*.JPG' -exec cp -t /root/TEST/CopiedImages {} + 

Vous devez regrouper les conditions -o car -a , le ET implicite entre le dernier nom -name '*.JPG' et -exec a une priorité plus élevée :

 find /root/TEST/Images \( -name '*.png' -o -name '*.jpg' -o -name '*.JPG' \) -exec cp -t /root/TEST/CopiedImages {} + 

Le regroupement se fait entre parenthèses, mais il faut les échapper (ou les citer) car leur signification particulière est shell.

Sans rapport avec cela, vous pouvez raccourcir l’expression globale en combinant des filtres pour jpg et JPG avec le -iname insensible à la -iname (comme indiqué dans les commentaires):

 find /root/TEST/Images \( -name '*.png' -o -iname '*.jpg' \) -exec cp -t /root/TEST/CopiedImages {} +