Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/12/2023, à 22:58

fred1234

suppression de fichier en fonction de sa resolution en pixel - RESOLU

Bonjour forum,

Mon besoin est dans le titre, j'ai fais une recupération de fichiers avec Photorec. Il y a beaucoup de fichiers inutiles de petites résolutions (120x160).
Je voudrais les supprimer avec en parametres une résolution mini par ex > 250 pixel.
Je connais les commandes identify , grep, rm , mais je n'arrive pas à les piper.

Dernière modification par fred1234 (Le 16/12/2023, à 11:42)

Hors ligne

#2 Le 16/12/2023, à 08:32

pingouinux

Re : suppression de fichier en fonction de sa resolution en pixel - RESOLU

Bonjour,
Je réponds un peu à côté.
Pour voir, dans l'arborescence d'où est lancée la commande, les fichiers de taille inférieure à 10000 bytes, par exemple :

find -type f -size -10000c -ls

Pour supprimer ces fichiers :

find -type f -size -10000c -delete

Il est prudent de faire une copie des fichiers dans un autre répertoire avant de commencer, car la commande avec -delete est dangereuse si on ne sait pas bien ce que l'on fait.

Hors ligne

#3 Le 16/12/2023, à 10:14

fred1234

Re : suppression de fichier en fonction de sa resolution en pixel - RESOLU

Merci pingouinux pour votre réponse,
mais pourrait-on supprimer les fichiers en fonction de leur résolution, par ex tout ceux qui sont inférieur à 2250 x 1255 ?
Je connais la commande identify qui donne la résolution mais je ne sais pas l'associer avec une commande delete ou rm par ex.

Hors ligne

#4 Le 16/12/2023, à 10:16

geole

Re : suppression de fichier en fonction de sa resolution en pixel - RESOLU

Bonjour.
Attention: Cette commande s'applique à tous les types de fichiers. Elle va donc aussi supprimer les fichiers texte. A moins que dans photorec, tu n'aies ciblé que les fichiers images.

Dernière modification par geole (Le 16/12/2023, à 10:23)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

Hors ligne

#5 Le 16/12/2023, à 10:20

fred1234

Re : suppression de fichier en fonction de sa resolution en pixel - RESOLU

j'ai ciblé que des fichiers jpg

Hors ligne

#6 Le 16/12/2023, à 10:46

geole

Re : suppression de fichier en fonction de sa resolution en pixel - RESOLU

Une idée.
- Redirige la sortie de identify dans un fichier ( >fic.txt)
- Trie le fichier sur ton critère d'élimination.
- Ouvre le fichier avec ton éditeur favori
- Supprime toutes les lignes que tu veux conserver.
- Sauve le fichier.
- Supprime tous les fichiers présents dans ce fichier de référence. Sauf erreur de codif.

while read j ; do sudo rm  $j;   done <fic.txt

Dernière modification par geole (Le 16/12/2023, à 10:52)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

Hors ligne

#7 Le 16/12/2023, à 11:15

jplemoine

Re : suppression de fichier en fonction de sa resolution en pixel - RESOLU

En 1 seule ligne, c'est pas évident mais tu peux peut-être essayer de faire un script genre (il faut adapter à ton cas précis):

#!/bin/bash

# mettre -x pour debugger
set +x

# les 2 lignes peuvent etre remplacees par un find
rep="/home/toto/Images"
liste=$(ls -d $rep/*.png)

for fichier in $liste
do
  ligne=$(identify "$fichier")
  type=$(echo $ligne | cut -d " " -f 2)
  res=$(echo  $ligne | cut -d " " -f 3)
  larg=$(echo $res | cut -d "x" -f 1)
  haut=$(echo $res | cut -d "x" -f 2)

  echo "----"
  echo "fichier = '$fichier', type = '$type', res='$res'"
  echo "larg='$larg', haut='$haut'
  echo "----"

  # par exemple : test qu une dimension est inferieure à 300
  if [ $larg -le 300 ] || [ $haut -le 300 ]; then
    echo "A supprimer"
  fi
done

Dernière modification par jplemoine (Le 16/12/2023, à 11:51)


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Déconnecté jusqu’à nouvel ordre

Hors ligne

#8 Le 16/12/2023, à 11:37

fred1234

Re : suppression de fichier en fonction de sa resolution en pixel - RESOLU

Un grand merci à tous les participants,
J'ai les éléments pour mon besoin.

Hors ligne

#9 Le 16/12/2023, à 17:58

Watael

Re : suppression de fichier en fonction de sa resolution en pixel - RESOLU

jplemoine a écrit :
liste=$(ls -d $rep/*.png)

for fichier in $liste

non, mais ça va pas !?

for fichier in "$rep"/*.png

et puis il s'agirait de lire la doc d'identify pour obtenir une sortie formatée avec les informations pertinentes.

read w h < <(identify -format '%W %H' "$fichier")

Dernière modification par Watael (Le 16/12/2023, à 20:02)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#10 Le 16/12/2023, à 18:21

jplemoine

Re : suppression de fichier en fonction de sa resolution en pixel - RESOLU

Watael a écrit :

liste=$(ls -d $rep/*.png)
for fichier in $liste

non, mais ça va pas !?

MDR. Si, ça va... C'est juste que je préfère passer par une variable intermédiaire : ça permet de faire un écho : plus facile à débugger / maintenir.

Mais il y a plein de manière de faire et j'avais bien dit qu'il fallait l'adapter.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Déconnecté jusqu’à nouvel ordre

Hors ligne

#11 Le 16/12/2023, à 19:03

nany

Re : suppression de fichier en fonction de sa resolution en pixel - RESOLU

Bonjour,



jplemoine a écrit :
Watael a écrit :

liste=$(ls -d $rep/*.png)
for fichier in $liste

non, mais ça va pas !?

MDR. Si, ça va... C'est juste que je préfère passer par une variable intermédiaire : ça permet de faire un écho : plus facile à débugger / maintenir.

En fait c’est l’usage de ls pour renseigner une variable qui est fortement déconseillé (il devrait même y avoir une loi pour l’interdire tongue) : une seule espace dans le nom d’un fichier rend la variable inexploitable.

Hors ligne

#12 Le 16/12/2023, à 19:20

jplemoine

Re : suppression de fichier en fonction de sa resolution en pixel - RESOLU

D'accord. Je comprends mieux....
En fait, On peut utiliser IFS mais ça ne fonctionne pas car le cut n'est plus bon.
Donc, mon code ne fonctionne pas s'il y a une espace dans le nom du fichier
il faut gérer ce cas là de manière explicite.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Déconnecté jusqu’à nouvel ordre

Hors ligne

#13 Le 16/12/2023, à 20:11

Watael

Re : suppression de fichier en fonction de sa resolution en pixel - RESOLU

si tu veux une variable, utilise un tableau :

tablo=( "$rep"/*.png )

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#14 Le 16/12/2023, à 21:31

geole

Re : suppression de fichier en fonction de sa resolution en pixel - RESOLU

fred1234 a écrit :

Bonjour forum,

Mon besoin est dans le titre, j'ai fais une récupération de fichiers avec Photorec

Cette récupération fabrique des noms de fichiers exclusivement numériques. lol
Ajout.
Voici le traitement que je proposais
On se remet propriétaire des données.

sudo chown -R $USER recup_dir*

On traite un répertoire.

cd recup_dir.1
identify *>Tri
sort Tri -k3 >Tri1

Puis élimination manuelle de ce qu'il  faut conserver.
Puis élimination de ce qui ne convient pas.

cat Tri1 | cut -d" " -f1 | xargs rm

Mais tout cela n'est pas satisfaisant car il y a une énorme quantité de répertoires à traiter.
Il faut donc faire une boucle et dans cette boucle, éliminer directement ce qui est  "petit".
Cependant,  trouver la liste complète des formats à éliminer  va être un  travail de titan vu la quantité de formats possibles.

Dernière modification par geole (Le 17/12/2023, à 14:16)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

Hors ligne

#15 Le 16/12/2023, à 21:55

Watael

Re : suppression de fichier en fonction de sa resolution en pixel - RESOLU

geole a écrit :
while read j ; do sudo rm  $j;   done <fic.txt

non, non. wink

xargs -a /chemin/fichierTrié sudo rm

:D


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne