Bonjour,
j'ai un petit souci qui n'est pas un puisque je peux passer outre mais je souhaite ne pas allonger mon script inutilement.
Voilà, j'ai un code qui traite des fichiers images au format jpeg.
Pour l'instant il "mange" un répertoire que l'utilisateur lui passe en argument. Mais je souhaite aussi pouvoir lui passer un fichier unique en donnant le nom de ce fichier lors de l'appel du script, en lieu et place d'un répertoire. L'argument du fichier étant sous la même "lettre" que celui du dossier lorsqu'on décide de traiter un dossier (cette lettre porte sans doute un nom plus spécifique ; ce sont ces petites lettres précédées d'un tiret et qui sont lues par getopts).
En l'occurrence l'argument est passé comme ceci : mon_script.sh -d "chemin/vers/dossier"
Et ce chemin est stocké dans la variable ${fichier}.
Bref, voilà un peu la structure simplifiée de ma boucle :
for i in "${fichier}"/*.[Jj][Pp]*[Gg]; do j='echo "${i}" | sed -e 's/\.jp\(e\)*g/\_processed.jp\1g/gI''; \ do # traiter les fichiers ${i} jpg du dossier les uns après les autres en leur faisant subir plein de trucs done |
Je profite en 1ère ligne de passer toutes les extensions jpeg en minuscules.
J'ai mis cette boucle for dans un test : if [ -d "${fichier}" ]
Ce que je peux faire, mais que je ne veux pas faire, c'est de remettre toutes les commandes qui sont dans la boucle for, dans un autre test : if [ -f "${fichier}" ]
Mais ça ferait doublon, et allongerait, je pense, inutilement le code, surtout que les commandes resteront les mêmes, mais elles seraient appliquées sur un fichier unique, au lieu des N fichiers contenus dans un dossier.
Merci beaucoup de vos tuyaux !!
Je dois passer à côté d'un truc tout con là...
Message édité par Swiss_Knight le 07-05-2013 à 00:47:02
---------------
Hergestellt in der Schweiz.