2017-10-19 62 views
0

J'ai récemment téléchargé toutes mes photos à partir 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 principal problème ici est que Google Takeout ne créera pas seulement un nouveau dossier pour chaque jour (2014-12-23) par exemple, mais contient également d'autres fichiers dans le dossier tels que metadata.json et 2014-12-23-edited.jpg.Dans Mac OSX Terminal, comment pouvons-nous déterminer le nombre de fichiers .jpg qui n'ont pas de mot à l'intérieur?

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

2014-12-23.jpg avait été modifiée, elle comprendra également 2014-12-23-edited.jpg. Par conséquent, ma question est, comment puis-je parcourir tout le dossier et ne compter que .jpg fichiers, et exclure tous les fichiers .jpg avec des noms qui incluent les mots «édités»? Existe-t-il un moyen de le faire dans Terminal sous Mac OSX?

Répondre

2

Vous pouvez utiliser:

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

Explication: la commande find va rechercher un dossier spécifié et ses sous-dossiers pour les fichiers correspondant aux critères donnés. -iname "*.jpg" correspond aux noms de fichiers se terminant par ".jpg", et '!' -iname "*-edited.jpg" correspond à ceux qui ne pas (c'est le !) se terminent par "-edited.jpg". find affiche 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 fichier, il y aura une ligne par fichier).

+0

Donc, fondamentalement, je remplacerais le '-iname c' par' -iname "* -edited.jpg" '? – user321627

+0

@ user321627 D'oh! Oui, c'est ce que c'était censé être (et je l'ai réparé maintenant). –

+0

Merci, c'est super duper utile !! – user321627

1

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

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

Le -v ne tient pas compte des lignes se terminent par edited.jpg et -c les compte.