Aller au contenu

[BASH] supprimer un affichage dans un script


kobal

Messages recommandés

Bonjour à tous,

Je suis en train de me faire un petit script pour remettre à jour les champs de date de création dans les informations exif d'une photo (j'avais oublier de remettre à jour la date qui est restée par défaut - super pour les tris...), en utilisant exiftool (http://www.sno.phy.queensu.ca/~phil/exiftool/).

Le problème supplémentaire, c'est que certains tags exif sont corrompus sur certains fichiers (jesépapourkoi), et dans ce cas les mises à jour des champs sont pas possibles. Du coup il faut ruser en supprimant tous les tags, puis recopier l'ensemble des tags (ceux qui sont corrompus sont ignorés) à partir du fichier original pour enfin renseigner le champs désiré.

Vu que j'ai plus de 1000 photos à corriger, je me suis dis qu'un peu d'automatisation ne ferait pas de mal.

Le principe du script :

1. création d'une copie de la photo

2. suppression de tous les tags

3. copie des tags

4. mise à jour de la date (passée en paramètre au bon format, pas de vérification)

5. suppression des fichiers de sauvegardes, des fichiers originaux et renommage du fichier temporaire en fichier original

Voici la bête :

#!/bin/sh
#FILELIST=`ls`
#echo $FILELIST

DATE=$1
echo "Etape 1 : Copie des fichiers défectueux"
for i in `ls`
do
name=$i"CPY"
cp $i $name
done

echo "Etape 2 : Mise a jour des tags exif"

for j in `ls`
do
if expr "$j" : ".*CPY"
then
	eval "exiftool -exif:all= $j"
	eval "exiftool -tagsfromfile ${j/CPY/} -all:all $j"
	eval "exiftool -AllDates=$DATE $j"
fi
done

echo "Etape  : Nettoyage des fichiers temporaires"
`rm *original`

echo "Etape  : Suppression des fichiers corrompus"
for k in `ls`
do
if expr "$k" : ".*JPG$"; then
	rm $k
fi
done

echo "Etape  : Restauration des fichiers de travail"
for l in `ls`
do

mv $l ${l/CPY/}

done


Le script à l'air de faire ce que je veux sauf sur un point - cosmétique - :

if expr "$k" : ".*JPG$"; then

Le résultat du expr apparaît dans la console, ce qui met pleins de 0/15/0/15 dans la console, ce qui est très moche. D'où ma question : comment supprimer l'affichage de l'évaluation de expr en bash ?

Merci d'avance !

Lien vers le commentaire
Partager sur d’autres sites

Hm, il y a pas mal de choses à modifier :

for i in `ls`

À remplacer par

for i in *

Mais ça serait encore mieux avec des variables qui veulent dire quelque chose.

Les eval sont à supprimer. Ça ne sert à rien ici.

De même, ça ne sert à rien de lancer des sous shells :

`rm *original`

devrait être remplacé par

rm *original

Sinon pour supprimer l'affichage, il faut utiliser >/dev/null.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...