cyrille a écrit : ↑dim. 17 juil. 2022 10:47
Hello Tioker, c'est dont on avait parlé , non ?
...
++
Cyrille
Oui en effet, mais mon problème avait été résolu pour les listes dont les éléments comportaient des espaces (que j'ai résolu avec IFS) mais ensuite j'avais ce répertoire de tête qui me grattait à la racine (ou ce répertoire racine qui me grattait la tête).
Entre Serged et toi j'y suis arrivé.
NicNac a écrit : ↑dim. 17 juil. 2022 11:05
Intéressant le sujet.
Je voudrais aller plus compliquer peut-être.
J'ai un répertoire de photos mais dont un bon 1/4 sont en fait des doublons qui ne portent pas le même nom mais bien la même date.
Est-ce que je pourrais créer une ligne de commande pour éventuellement créer un fichier qui sauve le doublon, qu'ensuite l'utiliser comme entrée pour une routine de delete?
Je ne sais pas comment @Cyrille a pu deviner que je ne prendrais pas ombrage (c'est de circonstance) à ce qu'on vienne spoiler mon sujet...
Et pour autant j'ai cherché un peu pour trouver la commande (pour le fichier P1110161.JPG bien sûr...)
Donc tu scrutes ton répertoire (en récurrent avec ma commande find), tu détermines si le fichier trouvé est une image, tu alimentes un fichier avec nom du fichier et le code md5, tu tries le fichier sur la colonne md5 et dès que y'a un doublon t'en fais ce que t'en veux.
Mais je pense que l'idée de Cyrille est sûrement meilleure que la mienne.
Sinon, KDO (script libre mais sans garantie...
Code : Tout sélectionner
#!/bin/bash
#
# Ce script scrute en récursif un répertoire P1 fourni au lancement.
# Il demande la taille maximum des fichiers (largeur ou hauteur)
# Il demande les extensions des fichiers à traiter (j'aurais pû sélectionner tous les fichiers type image...)
# Il boucle sur les types de fichiers (extension) sélectionnés
# Il boucle sur les répertoires
# Il boucle sur les fichiers avec la bonne extension
# Si ça dépasse, il convertit
# /!\ C'est une méthode bourrin, on convertit sans sauvegarder !!
# /!\ Le paramètre P1 au lancement doit être entouré de double quote (merci Cyrille et Serged)
# /!\ On utilise le détournement IFS pour gérer les séparateurs de listes (merci Cyrille)
#
# Test si paramètre est un dossier
#
if [[ -z $@ ]]
then
echo '-I- Paramètre non renseigné'
exit
else
if ! [[ -d $@ ]]
then
echo $@ '-I- n est pas un répertoire'
exit
fi
fi
# Inquire
InputSize=`zenity --title "Choisir taille image" --text "Tailles" --list --radiolist --separator=" " --column="" --column="$txt_size" FALSE "1024" FALSE "1600" TRUE "1920" FALSE "3840" --height=220`
InputExtensions=`zenity --title "Type de fichier" --text "Tailles" --list --checklist --separator=" " --column="" --column="$txt_size" TRUE "png" TRUE "PNG" TRUE "JPG" TRUE "jpg" TRUE "JPEG" TRUE "jpeg" --height=220`
# Init
I=0
J=0
PreviousIFS=$IFS
# boucle sur les extensions
for Extension in $InputExtensions
do
ListDirectories=$(find "$1" -type d)
IFS=$'\n'
# boucle sur les répertoires
for Directory in $ListDirectories
do
IFS=$'\n'
# boucle sur les fichiers avec la bonne extension dans chaque répertoire trouvé
for File in $Directory/*.$Extension
do
if [[ -f $File ]]
then
IFS=$'\n'
W=$(identify -format '%w' $File)
H=$(identify -format '%h' $File)
# Si la dimension de l'image est supérieure au max, on convertit
if (($W > $InputSize || $H > $InputSize))
then
echo '-I- Fichier ' $File ' largeur ' $W ' hauteur ' $H ' à convertir'
I=$(($I+1))
convert $File -resize "$InputSize"x"$InputSize" -quality 90 $File
else
echo '-I- Fichier ' $File ' largeur ' $W ' hauteur ' $H ' non éligible'
J=$(($J+1))
fi
fi
IFS=$PreviousIFS
done
IFS=$PreviousIFS
done
done
zenity --info --text="Fichiers convertis : $I\nFichiers non éligibles: $J"
##
Et n'oubliez pas de mettre la bière au frais par ces fortes chaleurs