Dans Mac OSX Terminal, comment pouvons-nous déterminer le nombre de fichiers .jpg ne contenant pas un mot précis?

J’ai récemment téléchargé toutes mes photos de Google Photos en utilisant leur option Takeout. Ils ont généralement des problèmes avec les photos manquantes, donc j’essaie de m’assurer que le nombre de photos que j’ai en ligne correspond au nombre que j’ai téléchargé. Le problème principal ici est que Google Takeout ne créera pas seulement un nouveau dossier pour chaque jour (2014-12-23), par exemple, mais ALSO contient également d’autres fichiers à l’intérieur du dossier tels que metadata.json et 2014-12-23-edited.jpg .

La partie modifiée est si une photo a été modifiée avant. Cela signifie que si la photo originale,

2014-12-23.jpg avait des modifications, il inclura également 2014-12-23-edited.jpg .

Par conséquent, ma question est la suivante: comment puis-je parcourir tous les dossiers et répertorier uniquement les fichiers .jpg , et exclure les fichiers .jpg dont le nom contient les mots “édités”? Est-il possible de le faire dans Terminal sous Mac OSX?

Vous pouvez utiliser:

 find /path/to/top/folder -iname "*.jpg" '!' -iname "*-edited.jpg" | wc -l 

Explication: la commande find recherche dans un dossier spécifié et dans ses sous-dossiers les fichiers correspondant aux critères donnés. -iname "*.jpg" correspond aux noms de fichiers qui se terminent par “.jpg”, et '!' -iname "*-edited.jpg" '!' -iname "*-edited.jpg" correspond à ceux qui ne le font pas (c’est-à-dire le ! ) se terminent par “-edited.jpg”. find imprime les chemins des fichiers qu’il trouve et wc -l compte le nombre de fichiers (en fait le nombre de lignes, mais à moins que vous n’ayez des sauts de ligne dans vos noms de fichiers, il y aura une ligne par fichier).

Juste pour le fun, une version légèrement plus facile:

 find /path/to/start/at -iname \*.jpg | grep -vc "edited.jpg$" 

Le -v ignore les lignes se terminant par edited.jpg et le -c compte.