IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Commande pour supprimer photos selon taille, Utiliser l'invit de commande mac pour supprimer des photos d'u
Options
Aladindindin
posté 8 Dec 2016, 12:43
Message #1


Nouveau Membre


Groupe : Membres
Messages : 11
Inscrit : 8 Dec 2016
Membre no 200 504



Bonjour,

Je travaille sur mac, et j'ai sur l'ordi ici environ 800 gigas de photos.
Je dois faire un tri, et en l'occurence, supprimer toutes les photos dont la taille est 163*741. Je ne peux pas le faire avec automator, car le poids de ces photos varie, seule la taille en pixel me permet de les identifier. Je pense qu'il y a environ 45 gigas de photos de cette taille.
Est-ce que vous connaitriez une commande, avec l'invit de commande, sur mac, pour faire ça ?
Je vous remercie bcp,
Bonne journée
Go to the top of the page
 
+Quote Post
KOENIG Yvan
posté 8 Dec 2016, 14:09
Message #2


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 885
Inscrit : 22 Aug 2002
Lieu : 06220 VALLAURIS
Membre no 3 217



Bonjour

Avant d'envisager de fournir quelques lignes de code, il me semble préférable de demander comment sont stockées vos photos.
Si elles sont dans la base de Photos, de iPhoto ou d'Aperture, j'ai tendance à crier casse-cou.
Tripatouiller le contenu de ces bases de données risque d'en perturber le fonctionnement.
Go to the top of the page
 
+Quote Post
luc1en
posté 8 Dec 2016, 14:26
Message #3


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 298
Inscrit : 29 Aug 2006
Lieu : France
Membre no 66 917



Bonjour,

s'il s'agit de fichiers autonomes accessibles avec Finder, Spotlight permet de trouver des images d'après leurs dimensions en pixel (largeur, hauteur).
Par contre, Automator ne permet pas d'accéder à ce paramètre. Je ne vois qu'exiftool pour un traitement de masse.


--------------------
MacBook Pro 6,2 – Mac OS 10.10.5 sur SSD interne, Mac OS 10.6.8 sur disque externe
Go to the top of the page
 
+Quote Post
baron
posté 8 Dec 2016, 14:27
Message #4


Macbidouilleur d'Or !
*****

Groupe : Modérateurs
Messages : 11 606
Inscrit : 22 Jul 2004
Lieu : Louvain-la-Neuve (Gaule Gelbique)
Membre no 21 291



Bonjour et bienvenue ! smile.gif

Je ne puis pas te guider précisément mais si l'usage de la ligne de commande te convient, il est très probable qu'exiftool soit l'outil approprié :
http://www.sno.phy.queensu.ca/~phil/exiftool/

[Grillé par lutch ! wink.gif ]

Ce message a été modifié par baron - 8 Dec 2016, 14:28.


--------------------
MacBook Pro 15’’ 2010 Core i5 2,53 GHz, 4 Go/500 Go – Mac OSX 10.6.8  Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 — + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C   Routeur/modem ADSL Trendnet TW100-BRM504 > B-Box 3 + HP LaserJet 4000 N  
La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même.
Les corsaires mettent en berne…
Go to the top of the page
 
+Quote Post
yponomeute
posté 8 Dec 2016, 14:29
Message #5


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 4 620
Inscrit : 26 Jan 2011
Lieu : Pollachius virens
Membre no 164 083



Bonjour,

Tu peux utiliser la fonction rechercher du Finder pour trouver tous tes fichiers. Dans les critères de recherche "Autre" il y a largeur en pixels et hauteur en pixels. Ensuite il faut sélectionner les éléments trouvés et les supprimer tout simplement.

Etant donné que tu 45 Go de photos de cette taille il est recommandé de ne pas faire la recherche sur tout le disque dur, mais plutôt dossier par dossier (si tes photos sont dans des dossiers).

Si tes images sont dans une bibliothèque (iPhoto, Photos etc), je confirme la mise en garde de Yvan à ce sujet.


--------------------
MBP 2017 15" avec clavier pourri et touchbar inutile
Go to the top of the page
 
+Quote Post
KOENIG Yvan
posté 8 Dec 2016, 15:54
Message #6


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 885
Inscrit : 22 Aug 2002
Lieu : 06220 VALLAURIS
Membre no 3 217



Toujours sous réserve de ne pas travailler sur un disque contenant une library iPhotos, Photo ou Aperture …
vous pouvez utiliser ce script.

<début>
use AppleScript version "2.4" -- Yosemite (10.10) or later
use framework "Foundation"

use script "BridgePlus" # gratuit à : https://www.macosxautomation.com/applescrip...BridgePlus.html
use scripting additions

property recursiveScan : true
# true = scan subfolders of the selected folder
# false = doesn't scan the subfolders of the selected folder

on run
my germaine()
end run

on germaine()
load framework
set sourceFolder to POSIX path of (choose folder)

set theFileInfo to my listFilesAndUTIsIn:sourceFolder
set theResult to my filterAnArray:theFileInfo conformingTo:"public.image"

set searchedSize to {163, 741}
repeat with aPath in theResult
set itsMetadatas to (current application's SMSForder's metadataFromImage:aPath |error|:(missing value))
try # Filter because some picture have no height or width embedded
set itsWidth to PixelWidth of itsMetadatas as integer
set itsHeight to PixelHeight of itsMetadatas as integer
if (searchedSize = {itsHeight, itsWidth}) or searchedSize = {itsWidth, itsHeight} then
tell application "System Events" to delete disk item aPath
end if
end try
end repeat
end germaine

on listFilesAndUTIsIn:sourceFolder
set fileManager to current application's NSFileManager's defaultManager()
set aURL to current application's |NSURL|'s fileURLWithPath:sourceFolder
if recursiveScan then
set theOptions to (current application's NSDirectoryEnumerationSkipsPackageDescendants as integer) + (current application's NSDirectoryEnumerationSkipsHiddenFiles as integer)
set theEnumerator to fileManager's enumeratorAtURL:aURL includingPropertiesForKeys:{} options:theOptions errorHandler:(missing value)
set directoryContents to theEnumerator's allObjects()
else
set directoryContents to fileManager's contentsOfDirectoryAtURL:aURL includingPropertiesForKeys:{} options:0 |error|:(missing value)
end if
set tempArray to current application's NSMutableArray's arrayWithCapacity:(directoryContents's |count|()) -- array to hold values

repeat with aURL in directoryContents
set {theResult, theUTI} to (aURL's getResourceValue:(reference) forKey:(current application's NSURLTypeIdentifierKey) |error|:(missing value))
(tempArray's addObject:(current application's NSDictionary's dictionaryWithObjects:{aURL, theUTI} forKeys:{"theURL", "theUTI"}))
end repeat

return tempArray
end listFilesAndUTIsIn:

on filterAnArray:tempArray conformingTo:someUTI
set thePredicate to current application's NSPredicate's predicateWithFormat_("theUTI UTI-CONFORMS-TO %@", someUTI)
set foundItems to (tempArray's filteredArrayUsingPredicate:thePredicate)'s valueForKey:"theURL"
set foundItems to (foundItems's valueForKey:"path")
return foundItems as list
end filterAnArray:conformingTo:

#=====#=====#=====#=====#=====#=====
<fin>

Yvan KOENIG running Sierra 10.12.1 in French (VALLAURIS, France) jeudi 8 décembre 2016 15:54:08

Ce message a été modifié par KOENIG Yvan - 8 Dec 2016, 15:55.
Go to the top of the page
 
+Quote Post
Jaypee
posté 8 Dec 2016, 21:44
Message #7


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 344
Inscrit : 29 Aug 2002
Membre no 3 340



il existe une commande sips

sips -g pixelWidth x.jpg

Un toolkit exiftool est aussi très utile, avec ce script simple autour pour couper le champ de 2 à 2 avec les deux points comme déimiteur de colonne.

exiftool -imagesize $1 | cut -f2,2 -d:

http://www.sno.phy.queensu.ca/~phil/exiftool/

J-P

Go to the top of the page
 
+Quote Post
Aladindindin
posté 8 Dec 2016, 21:55
Message #8


Nouveau Membre


Groupe : Membres
Messages : 11
Inscrit : 8 Dec 2016
Membre no 200 504



Bonjour à tous,
je vais lire toutes vos réponses. Mes fichiers sont stockés dans des dossiers tout simplement, pas des library
Je vais lire tous vos messages et les comprendre
merci bcp
Go to the top of the page
 
+Quote Post
baron
posté 9 Dec 2016, 04:37
Message #9


Macbidouilleur d'Or !
*****

Groupe : Modérateurs
Messages : 11 606
Inscrit : 22 Jul 2004
Lieu : Louvain-la-Neuve (Gaule Gelbique)
Membre no 21 291



Explore les réponses liées à exiftool.
Tu vas trouver ton bonheur.
wink.gif


--------------------
MacBook Pro 15’’ 2010 Core i5 2,53 GHz, 4 Go/500 Go – Mac OSX 10.6.8  Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 — + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C   Routeur/modem ADSL Trendnet TW100-BRM504 > B-Box 3 + HP LaserJet 4000 N  
La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même.
Les corsaires mettent en berne…
Go to the top of the page
 
+Quote Post
Jaypee
posté 9 Dec 2016, 07:17
Message #10


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 344
Inscrit : 29 Aug 2002
Membre no 3 340



Un autre fil de ce forum sur des sujet d'automatisation autour des bibliothèques de photos
http://forum.macbidouille.com/index.php?showtopic=399750

J-P
Go to the top of the page
 
+Quote Post
teddy7545
posté 9 Dec 2016, 16:33
Message #11


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 809
Inscrit : 4 Apr 2004
Lieu : Lorraine - 54
Membre no 17 184



Bonjour

Une alternative supplémentaire que j'ai testé et qui est fonctionnelle.
Je réitère toutefois les recommandations de prudence déjà rappelées précédemment.

Si tu souhaites le faire avec le terminal et sans devoir installer exiftool (qui n'est pas installé en standard), tu peux utiliser la commande sips pour extraire les paramètres de taille des images (comme déjà précisé par Jaypee).
A partir ce cette commande, j'ai développé une ligne de commande unique fonctionnelle et complètes en utilisant quelques commandes standard (find, perl, awk ... )

Voici la commande que je propose pour uniquement lister les fichier jpg (ici en minuscule seulement) de la taille souhaitée (163*741):
Code
find . -type f -name "*.jpg" -exec sips -g pixelWidth -g pixelHeight '{}' \; | perl -ne 's/  pixelWidth: ([0-9][0-9]*)\x0A/$1/g; print' | perl -ne 's/  pixelHeight: ([0-9][0-9]*)/ $1/g; print' | perl -ne 's/^\/(.*)\x0A/\"\/$1\" /g; print' |  perl -ne 's/(".*") ([0-9][0-9]*) ([0-9][0-9]*)/$2 $3 $1/g; print' | awk '$1==163 && $2==741 {print $3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20}'
Il faut tout d'abord te déplacer dans le répertoire de départ que tu souhaites explorer (commande cd ...).
Cette commande est récursives et va donc explorer tous les sous répertoires contenus depuis le répertoire de départ.

La partie {print $3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20} n'est pas très élégante mais je l'ai mise pour éviter de compliquer inutilement la commande awk tout en prévoyant que les noms des chemins vers les images peuvent contenir des espaces (ce qui était mon cas).
Ici la commande accepte donc jusqu'à 17 espaces (On ne sait jamais smile.gif tongue.gif cool.gif ).

Pour copier les fichiers recherchés dans un répertoire CopyFile sur le bureau (à créer au préalable) tu peux alors faire:
Code
find . -type f -name "*.jpg" -exec sips -g pixelWidth -g pixelHeight '{}' \; | perl -ne 's/  pixelWidth: ([0-9][0-9]*)\x0A/$1/g; print' | perl -ne 's/  pixelHeight: ([0-9][0-9]*)/ $1/g; print' | perl -ne 's/^\/(.*)\x0A/\"\/$1\" /g; print' |  perl -ne 's/(".*") ([0-9][0-9]*) ([0-9][0-9]*)/$2 $3 $1/g; print' | awk '$1==163 && $2==741 {print $3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20}'  | xargs -J % cp % ~/Desktop/CopyFile/
Remplacer cp par mv pour déplacer plutôt que copier.
Enfin pour effacer les fichiers recherchés tu peux remplacer la commande de copie (| xargs -J % cp % ~/Desktop/CopyFile/) par :
Code
... | xargs rm -v
(L'option -v est facultative mais permet de lister les fichiers éffacés, car sinon tout sera "silencieux")

Si tu as un gros volume à inspecter la commande mettra du temps (commence toutefois par la première commande pour lire uniquement sans rien effacer)
Bon courage

Ce message a été modifié par teddy7545 - 10 Dec 2016, 11:13.


--------------------
MP Intel Dual Xéon 3 GHz - MacOSX 10.10.3 - ATI Radeon HD 5770 - ATTO UL5D - Apple Cinema HD Display 23 pouces
MBP 15' 2017 - MBP 13' mid 2009 - iMac 24' 8,1 2,8GHz - MP G4 MDD Bi 1,25 GHz - MP G4 Quicksylver 933MHz
Go to the top of the page
 
+Quote Post
teddy7545
posté 9 Dec 2016, 19:56
Message #12


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 809
Inscrit : 4 Apr 2004
Lieu : Lorraine - 54
Membre no 17 184



Pour améliorer et simplifier la commande awk qui ne me plaisait pas smile.gif , voici une petite correction simple cool.gif :
J'ai remplacé les espaces par des tabulations (\t) dans la dernière commande perl et ensuite indiqué à awk que le séparateur sera ce caractère.
De ce fait, il n'y a plus d’ambiguïté avec les espaces contenus dans les noms de chemins (et ils peuvent être en nombre quelconque sans avoir à préciser un nombre de colonne important comme précédemment).

Recherche et lecture des fichiers:
Code
find . -type f -name "*.jpg" -exec sips -g pixelWidth -g pixelHeight '{}' \; | perl -ne 's/  pixelWidth: ([0-9][0-9]*)\x0A/$1/g; print' | perl -ne 's/  pixelHeight: ([0-9][0-9]*)/ $1/g; print' | perl -ne 's/^\/(.*)\x0A/\"\/$1\" /g; print' |  perl -ne 's/(".*") ([0-9][0-9]*) ([0-9][0-9]*)/$2\t$3\t$1/g; print' | awk -F \t '$1==163 && $2==741 {print $3}'

Déplacement des fichiers:
Code
find . -type f -name "*.jpg" -exec sips -g pixelWidth -g pixelHeight '{}' \; | perl -ne 's/  pixelWidth: ([0-9][0-9]*)\x0A/$1/g; print' | perl -ne 's/  pixelHeight: ([0-9][0-9]*)/ $1/g; print' | perl -ne 's/^\/(.*)\x0A/\"\/$1\" /g; print' |  perl -ne 's/(".*") ([0-9][0-9]*) ([0-9][0-9]*)/$2\t$3\t$1/g; print' | awk -F \t '$1==163 && $2==741 {print $3}' | xargs -J % mv % ~/Desktop/CopyFile/
Remplacer mv par cp pour copier plutôt que déplacer.
Tu peux aussi déplacer dans la corbeille (plutôt que dans le répertoire CopyFile en modifiant la commande comme suit:
Code
... | xargs -J % mv % ~/.Trash/

Effacement (sans passer par la corbeille):
remplacer la commande de copie (| xargs -J % cp % ~/Desktop/CopyFile/) par :
Code
... | xargs rm -v
(L'option -v est facultative mais permet de lister les fichiers effacés, car sinon tout sera "silencieux")

Pour traiter toutes tes photos il te faudra connaitre les extensions utilisées car la commande ci-dessusne traite que les .jpg
Pour traiter par exemple en même temps les .jpg .JPG .jpeg .JPEG .png .PNG .gif .GIF, tu peux remplacer la première partie de la commande par (iname rend la commande insensible à la casse) :

Code
find . -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.gif" \) -exec sips -g pixelWidth -g pixelHeight '{}' \; | ...........
Toutefois le temps d’exécution semble augmenter de façon significative en traitant plusieurs extensions simultanées.
J'essaie encore de simplifier un peu les successions de commandes perl, mais le traitement de retour chariot rend cette simplification plus compliquée.

Ce message a été modifié par teddy7545 - 10 Dec 2016, 11:34.


--------------------
MP Intel Dual Xéon 3 GHz - MacOSX 10.10.3 - ATI Radeon HD 5770 - ATTO UL5D - Apple Cinema HD Display 23 pouces
MBP 15' 2017 - MBP 13' mid 2009 - iMac 24' 8,1 2,8GHz - MP G4 MDD Bi 1,25 GHz - MP G4 Quicksylver 933MHz
Go to the top of the page
 
+Quote Post
KOENIG Yvan
posté 11 Dec 2016, 19:06
Message #13


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 885
Inscrit : 22 Aug 2002
Lieu : 06220 VALLAURIS
Membre no 3 217



Juste pour information, le script que j'ai posté vient de balayer 760 Go de fichiers sur un disque dur mécanique de 1 To en moins de 14 minutes.
Go to the top of the page
 
+Quote Post
baron
posté 11 Dec 2016, 19:40
Message #14


Macbidouilleur d'Or !
*****

Groupe : Modérateurs
Messages : 11 606
Inscrit : 22 Jul 2004
Lieu : Louvain-la-Neuve (Gaule Gelbique)
Membre no 21 291



Brillant !


--------------------
MacBook Pro 15’’ 2010 Core i5 2,53 GHz, 4 Go/500 Go – Mac OSX 10.6.8  Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 — + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C   Routeur/modem ADSL Trendnet TW100-BRM504 > B-Box 3 + HP LaserJet 4000 N  
La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même.
Les corsaires mettent en berne…
Go to the top of the page
 
+Quote Post
Aladindindin
posté 14 Dec 2016, 00:04
Message #15


Nouveau Membre


Groupe : Membres
Messages : 11
Inscrit : 8 Dec 2016
Membre no 200 504



Bonjour,

Merci bcp pour ces commentaires !

Je suis un peu perdu.

Je dois donc télécharger un logiciel pour appliquer le code, c'est ça ?


merci,

Bonjour,

Pardon de mon incompétence.
Je vais devoir apprendre à écrire la commande pour me placer dans le repertoire source. Si possible, je veux bien éviter exitfool.
Si je veux déplacer tous ces fichiers dans le dossier "delete" sur le bureau, que je vais ensuite supprimer, je dois utiliser la commande 2 en remplaçant quoi donc par mv ?

merci!

Citation (teddy7545 @ 9 Dec 2016, 16:33) *
Bonjour

Une alternative supplémentaire que j'ai testé et qui est fonctionnelle.
Je réitère toutefois les recommandations de prudence déjà rappelées précédemment.

Si tu souhaites le faire avec le terminal et sans devoir installer exiftool (qui n'est pas installé en standard), tu peux utiliser la commande sips pour extraire les paramètres de taille des images (comme déjà précisé par Jaypee).
A partir ce cette commande, j'ai développé une ligne de commande unique fonctionnelle et complètes en utilisant quelques commandes standard (find, perl, awk ... )

Voici la commande que je propose pour uniquement lister les fichier jpg (ici en minuscule seulement) de la taille souhaitée (163*741):
Code
find . -type f -name "*.jpg" -exec sips -g pixelWidth -g pixelHeight '{}' \; | perl -ne 's/  pixelWidth: ([0-9][0-9]*)\x0A/$1/g; print' | perl -ne 's/  pixelHeight: ([0-9][0-9]*)/ $1/g; print' | perl -ne 's/^\/(.*)\x0A/\"\/$1\" /g; print' |  perl -ne 's/(".*") ([0-9][0-9]*) ([0-9][0-9]*)/$2 $3 $1/g; print' | awk '$1==163 && $2==741 {print $3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20}'
Il faut tout d'abord te déplacer dans le répertoire de départ que tu souhaites explorer (commande cd ...).
Cette commande est récursives et va donc explorer tous les sous répertoires contenus depuis le répertoire de départ.

La partie {print $3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20} n'est pas très élégante mais je l'ai mise pour éviter de compliquer inutilement la commande awk tout en prévoyant que les noms des chemins vers les images peuvent contenir des espaces (ce qui était mon cas).
Ici la commande accepte donc jusqu'à 17 espaces (On ne sait jamais smile.gif tongue.gif cool.gif ).

Pour copier les fichiers recherchés dans un répertoire CopyFile sur le bureau (à créer au préalable) tu peux alors faire:
Code
find . -type f -name "*.jpg" -exec sips -g pixelWidth -g pixelHeight '{}' \; | perl -ne 's/  pixelWidth: ([0-9][0-9]*)\x0A/$1/g; print' | perl -ne 's/  pixelHeight: ([0-9][0-9]*)/ $1/g; print' | perl -ne 's/^\/(.*)\x0A/\"\/$1\" /g; print' |  perl -ne 's/(".*") ([0-9][0-9]*) ([0-9][0-9]*)/$2 $3 $1/g; print' | awk '$1==163 && $2==741 {print $3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20}'  | xargs -J % cp % ~/Desktop/CopyFile/
Remplacer cp par mv pour déplacer plutôt que copier.
Enfin pour effacer les fichiers recherchés tu peux remplacer la commande de copie (| xargs -J % cp % ~/Desktop/CopyFile/) par :
Code
... | xargs rm -v
(L'option -v est facultative mais permet de lister les fichiers éffacés, car sinon tout sera "silencieux")

Si tu as un gros volume à inspecter la commande mettra du temps (commence toutefois par la première commande pour lire uniquement sans rien effacer)
Bon courage


Ce message a été modifié par Aladindindin - 14 Dec 2016, 00:14.
Go to the top of the page
 
+Quote Post
teddy7545
posté 14 Dec 2016, 00:51
Message #16


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 809
Inscrit : 4 Apr 2004
Lieu : Lorraine - 54
Membre no 17 184



Bonsoir

Il te faut donc tout d'abord créer ce répertoire (nommé delete) sur ton bureau (avec le Finder c'est le plus simple).

Ensuite il faut démarrer l'application "Terminal" (application qui se trouve dans /Applications/Utilitaires)
Il faut ensuite placer le terminal au niveau du répertoire ou tes photos se trouvent.
Pas exemple, si tes photos sont contenues dans un répertoire "MesPhotos" (et dans ses sous répertoires) du répertoire Image de ton compte, tu devras taper
Code
cd ~/Pictures/MesPhotos
~représente ton compte (ta petite maison)
Pictures est le nom réel du répertoire Images dans le système (comme Desktop est le nom réel du répertoire Bureau)

Enfin pour déplacer les fichiers recherchés dans le répertoire delete de ton bureau la commande devient donc :
Code
find . -type f -name "*.jpg" -exec sips -g pixelWidth -g pixelHeight '{}' \; | perl -ne 's/  pixelWidth: ([0-9][0-9]*)\x0A/$1/g; print' | perl -ne 's/  pixelHeight: ([0-9][0-9]*)/ $1/g; print' | perl -ne 's/^\/(.*)\x0A/\"\/$1\" /g; print' |  perl -ne 's/(".*") ([0-9][0-9]*) ([0-9][0-9]*)/$2\t$3\t$1/g; print' | awk -F \t '$1==163 && $2==741 {print $3}' | xargs -J % mv % ~/Desktop/delete/

Si tu es pas sur de toi avec le terminal n'oublie pas de faire une sauvegarde et test d'abord la première de mes commandes qui ne fais que lister sans rien déplacer.

Bon courage.

Ce message a été modifié par teddy7545 - 14 Dec 2016, 00:56.


--------------------
MP Intel Dual Xéon 3 GHz - MacOSX 10.10.3 - ATI Radeon HD 5770 - ATTO UL5D - Apple Cinema HD Display 23 pouces
MBP 15' 2017 - MBP 13' mid 2009 - iMac 24' 8,1 2,8GHz - MP G4 MDD Bi 1,25 GHz - MP G4 Quicksylver 933MHz
Go to the top of the page
 
+Quote Post
Aladindindin
posté 14 Dec 2016, 16:17
Message #17


Nouveau Membre


Groupe : Membres
Messages : 11
Inscrit : 8 Dec 2016
Membre no 200 504



BOnjour,
Merci !
Je vais surement écrire ceci, si ça fait sens, car j'ai des photos partout (document, musique - projets musiques et photo - images, vidéo, enfin partout):
cd ~/MAC

Puis-je ?

Je viens de tenter de lister les fichiers et j'ai obtenu ceci: "Error: Error querying file"




Ce message a été modifié par Aladindindin - 14 Dec 2016, 16:41.
Go to the top of the page
 
+Quote Post
teddy7545
posté 14 Dec 2016, 19:20
Message #18


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 809
Inscrit : 4 Apr 2004
Lieu : Lorraine - 54
Membre no 17 184



Bonjour,

Code
cd ~/MAC
ne fait sens que si tu as un répertoire répertoire MAC dans ta "maison" ce qui normalement ne devrait pas être.
Si tu essaie et que ce répertoire n'existe pas tu aura un message te disant ... No such file or directory

Si tu veux parcourir tout les répertoires à la fois tu peux tenter
Code
cd ~/


Citation
Je viens de tenter de lister les fichiers et j'ai obtenu ceci: "Error: Error querying file"

Il est possible que quelques fichiers soient cryptés, inaccessible ou dégradés
(surtout si tu as tenté directement ~/ car tu traverse des répertoires inadéquats) mais ça n'empêche pas la commande de poursuivre.
J'ai aussi quelques lignes de ce type dans certains répertoires ... ça ne gêne pas le fonctionnement.
Ca signifie que même si le fichier existe, il ne sait pas répondre à la requêtes sips et donc qu'il est incapable de donner sa taille en pixel. (encore une fois il s'agit probablement d'un fichier corrompu ou d'un fichier d'un format spécifique non reconnu)
Ceux que j'ai trouvé chez moi sont clairement dans ce cas.
Si tu laisses la commande se poursuivre elle devrait te donner le résultat attendus (sur tous les fichiers lisibles).

Si tu veux savoir quels fichiers semblent "corrompus" ou en tous les cas n'ont pas de taille, essai cette commande:
Code
find . -type f -name "*.jpg" -exec sips -g pixelWidth -g pixelHeight '{}' \; 2>&1 | grep -A1 "Error querying file"

Laisse la tourner jusqu'au bout pour qu'elle te liste tous les fichiers qui posent problème.
Regarde ensuite si tu arrives à les lire en passant par le Finder wink.gif.

En fonction de la place ou ils se trouvent, fait attention avant de les supprimer car il peut s'agir également de document avec un format spécifique (j'ai un exemple avec un livre epub rangé dans ibooks et dont le contenu est "crypté" : il marche mais les fichiers jpg attaché ne peux pas être lu directement et ne répondent pas à la commande sips > "Error: Error querying file").
Pour cette raison, je te recommande plutôt de parcourir ton disque en ciblant mieux ou sont les photos que tu veux traiter quitte a lancer la commande pour chacun des répertoires majeurs (Download, Desktop, Pictures ...)

Ce message a été modifié par teddy7545 - 15 Dec 2016, 01:13.


--------------------
MP Intel Dual Xéon 3 GHz - MacOSX 10.10.3 - ATI Radeon HD 5770 - ATTO UL5D - Apple Cinema HD Display 23 pouces
MBP 15' 2017 - MBP 13' mid 2009 - iMac 24' 8,1 2,8GHz - MP G4 MDD Bi 1,25 GHz - MP G4 Quicksylver 933MHz
Go to the top of the page
 
+Quote Post
teddy7545
posté 15 Dec 2016, 04:11
Message #19


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 809
Inscrit : 4 Apr 2004
Lieu : Lorraine - 54
Membre no 17 184



Pour éviter d'avoir les erreurs avec les fichiers qui posent problème (et d'éliminer les difficultés que ça peut provoquer avec les fichiers contigües) , trouves ci-dessous une ligne de commande modifiée pour lister:
Code
find . -path ./Library -prune -o -type f -iname "*.jpg" -exec sips -g pixelWidth -g pixelHeight '{}' \; 2>&1 | perl -ne 's/  pixelWidth: ([0-9][0-9]*)\x0A/$1/g; print' | perl -ne 's/  pixelHeight: ([0-9][0-9]*)/\t$1/g; print' | perl -ne 's/^(Error.*)\x0A/$1@/g; print' | grep -v 'Error\|denied\|Warning' | perl -ne 's/^\/(.*)\x0A/\"\/$1\"\t/g; print' | awk -F \t '($2==741 && $3==163) || ($2==163 && $3==741) {print $1}'

Puisque tu tiens à explorer tous les fichiers, j'ai inclus une exclusion sur le répertoire Library
Avec cette commande tu ne devrais plus avoir de message d'erreur.
Ma première commande recherchais les fichiers avec la taille 163x741, et j'ai également ajouté ici les fichiers dont la taille est de 741x163.
Je ne sais pas si c'était bien ce que tu souhaitais mais j'ai vu que c'est ce qu'avais prévu KOENIG Yvan dans son script.

Pour info, sur mon disque de 1T, l'exploration de tous les fichiers de mon compte utilisateur de 450 Go (Library de 90 Go exclus) soit 360 Go (360000 fichiers) et la production de la liste des fichiers avec la taille recherchée parmi environ 16000 fichiers jpg à duré moins de 7mn35
Citation
real 7m34.292s
user 2m50.462s
sys 3m12.330s

pour déplacer tous les fichiers répondant à ces critères dans ton répertoire delete, il suffit d'ajouter la commande suivante à la suite de la première partie
Code
| xargs -J % mv % ~/Desktop/delete/


Ce message a été modifié par teddy7545 - 15 Dec 2016, 13:03.


--------------------
MP Intel Dual Xéon 3 GHz - MacOSX 10.10.3 - ATI Radeon HD 5770 - ATTO UL5D - Apple Cinema HD Display 23 pouces
MBP 15' 2017 - MBP 13' mid 2009 - iMac 24' 8,1 2,8GHz - MP G4 MDD Bi 1,25 GHz - MP G4 Quicksylver 933MHz
Go to the top of the page
 
+Quote Post
trouspinette
posté 28 Apr 2017, 15:52
Message #20


Macbidouilleur d'Or !
*****

Groupe : Rédacteurs
Messages : 4 853
Inscrit : 19 Feb 2002
Lieu : BZH
Membre no 2 083



Citation (Aladindindin @ 8 Dec 2016, 13:43) *
Bonjour,

Je travaille sur mac, et j'ai sur l'ordi ici environ 800 gigas de photos.
Je dois faire un tri, et en l'occurence, supprimer toutes les photos dont la taille est 163*741. Je ne peux pas le faire avec automator, car le poids de ces photos varie, seule la taille en pixel me permet de les identifier. Je pense qu'il y a environ 45 gigas de photos de cette taille.
Est-ce que vous connaitriez une commande, avec l'invit de commande, sur mac, pour faire ça ?
Je vous remercie bcp,
Bonne journée

Je reviens sur ce sujet, même si la solution proposée n'est pas CLI (command line)...

Je vous invite à regarder du côté de Hazel, un excellent produit :-)

Son énorme avantage est qu'il surveille les dossiers dont vous lui confiez une ou des tâches, en tirant partie des événements du FileSystem et détecte quasiment de suite. Vous n'avez donc pas besoin d'avoir un script qui se lance régulièrement.

Voici ce qui permet de créer une action (en un rien de temps) pour copier des images dont la taille est H/V supérieure à 1000 pixels.



Pour celles et ceux qui ne veulent pas écrire une seule ligne de scripts/AppleScript, c’est un "must have" !


--------------------
Quis custodiet ipsos custodes ? - Lorsqu'un sujet est résolu, merci d'indiquer [Résolu] dans le titre de votre post !

Luttons contre le style SMS !!!

iPhone X 64 Go iOS 10.3 • MacBook Pro i7 - 10.12 - 16 GB RAM - 1 TB Samsung 840 EVO • MacMini 2010 - 10.9 • @Orange Dégroupé
Linux • pfSense • Une pointe de Windows aussi • Enfocus Switch Expert
Go to the top of the page
 
+Quote Post
yponomeute
posté 29 Apr 2017, 07:09
Message #21


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 4 620
Inscrit : 26 Jan 2011
Lieu : Pollachius virens
Membre no 164 083



Citation (trouspinette @ 28 Apr 2017, 16:52) *
Pour celles et ceux qui ne veulent pas écrire une seule ligne de scripts/AppleScript, c’est un "must have" !

+1
C'est un "must have" pour tout le monde.


--------------------
MBP 2017 15" avec clavier pourri et touchbar inutile
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 17th July 2018 - 00:56