2016-10-05 2 views
0

I ayant la commande linux suivante pour identifier tous les fichiers .gif et la liste de ses cadres dans le répertoire actif:Identifier (et supprimer) tous les fichiers .gif avec plus de 1 cadre dans tous les sous-répertoires

identify -format '%n %i\n' -- *.gif 

Maintenant, je à modifier et d'étendre la commande à fullfil les éléments suivants: 1. indentifier seulement les fichiers .gif avec plus de 1 cadre 2. voir aussi dans tous les sous-répertoires (en ce moment la commande est seulement à la recherche dans le répertoire actif) 3. une commande: a) la liste des fichiers identifiés b) supprimer les fichiers identifiés

Je vous serais reconnaissant d'aider les gars à atteindre cet objectif ...

Merci beaucoup d'avance !!

Best, Florian

Répondre

1

Votre sur la bonne voie. Je recommande tirer parti find, sort et awk commandes pour générer une liste de fichiers à supprimer.

find /path/to/directory \ 
    -type f \ 
    -name "*.gif" \ 
    -exec identify -format '%n %i\n' {} \; \ 
    | sort -u \ 
    | awk '$1 > 1 {print $2}' 

Comment cela fonctionne

  • find analysera tous les sous-directeurs pour le fichier se terminant par *.gif et passer les résultats à ImageMagick.

  • identify imprime le nom + nombre image (ce que votre déjà fait)

  • sort -u supprimera les doublons (uniq utilitaire également.)
  • awk doit imprimer la deuxième colonne (nom de fichier) si le la première colonne (nombre d'images) est supérieur à 1.

Note: cela ne supprimera pas les fichiers, mais fournir une liste qui peut être inspecté et passé à rm commande

+0

Merci! Malheureusement, je reçois des résultats étranges avec cette commande :) media: image corrompue '/is/htdocs/.......gif » @ erreur/gif.c/PingGIFImage/962. –

+0

Oups. On dirait que l'utilitaire 'find' a trouvé une image invalide. IM ne peut pas continuer - donc cette solution ne fonctionnerait pas :( – emcconville