Bonjour,
Je prends des photos en deux formats : JPG et ARW.
Parfois, j'ai plusieurs centaines de photos à trier.
Les noms des fichiers s'écrivent ainsi : DSC0120.JPG DSC0120.ARW
Je trie les fichiers JPG (plus légers) et, ensuite, j'aimerais ne conserver que les fichiers JPG et ARW qui m'intéressent, plutôt qu'effacer les fichiers JPG indésirables et avoir toujours les fichiers ARW correspondant (qui sont les mêmes photos, mais dans un autre format), j'aimerais un moyen pour effacer aussi les ARW dont les fichiers JPG analogues ne m'intéressent pas.
Pour l'instant, je crée un dossier avec toutes les photos JPG à effacer, puis, je liste tous les fichiers dans un fichier texte, fichier dans lequel, avec sed, je remplace toutes les extensions JPG par ARW, puis, un simple rm $(<liste_indésirables)…enfin, j'efface les JPG que j'avais mis de côté.
Il y a peut-être une solution plus simple ou plus propre ? Merci !
# Boucle for et substitution
Posté par Matthieu Moy (site web personnel) . Évalué à 6.
Plus qu'à remplacer la commande
echo
par autre chose, mais il vaut mieux tester avececho
d'abord ;-).# contradiction
Posté par NeoX . Évalué à 3.
1) faire une liste des fichiers qui t'interessent (ou qui ne t'interessent pas), dans un dossier comme tu le fais actuellement
2) avec l'exemple ci-dessus, parcourir ce dossier pour selectionner les fichier RAW qui vont avec
3) faire l'action qui va bien (suppression si c'est une liste qui ne t'interesse pas, deplacement si c'est une liste qui t'interesse)
autre piste, avec ton visualeur d'image, tu supprimes les JPG qui ne te plaise pas.
puis tu contruis ta boucle pour supprimer les RAW qui n'ont pas de JPG correspondant
[^] # Re: contradiction
Posté par Stinouff . Évalué à 1.
Ce n'est pas une contradiction ?
fichier1.JPG, fichier1.ARW, fichier2.JPG, fichier2.ARW
Si le fichier fichier2.JPG ne m'intéresse pas, je veux pouvoir effacer celui-ci et fichier2.ARW en même temps, ou en tout cas, facilement. :)
Merci en tout cas ! :)
[^] # Re: contradiction
Posté par NeoX . Évalué à 3.
du coup tu as trouvé entre mon idée et le code fournit plus haut ?
tu peux faire une boucle qui fait
pour chaque fichier ARW
recupere son nom sans le ARW
si tu n'as pas le JPG associé
alors supprime le fichier ARW
finsi
finpour
à traduire dans le langage que tu veux
[^] # Re: contradiction
Posté par Stinouff . Évalué à 1.
Ce sera en bash, de toute façon. Mais l'idée est bonne. J'y travaille pour avoir quelque chose de propre. :)
# Peut-être avec ce script bash
Posté par MicP . Évalué à 3.
Bonjour
[^] # Re: Peut-être avec ce script bash
Posté par NeoX . Évalué à 3. Dernière modification le 07 avril 2019 à 15:17.
sauf que là tu lui fais effacer les JPG et les RAW s'ils existent.
lui il veut selectionner ces fichiers à garder (ou à supprimer)
pour garder les JPG et les RAW de la premiere selection (ou supprimer les RAW des JPG qui n'existent plus)
[^] # Re: Peut-être avec ce script bash
Posté par MicP . Évalué à 1. Dernière modification le 07 avril 2019 à 16:35.
Non, je ne lui fais rien effacer du tout :
Dans la ligne de commande qui lancera le script,
s'il ne donne aucun nom de fichier dont le nom d'extension serait
.JPG
aucun fichier ne sera supprimé.
D'autre part, quoi qu'il donne comme argument dans la ligne de commande lançant ce script,
aucun fichier dont le nom d'extension serait
.RAW
ne sera supprimé ou modifié ou effacé.
[^] # Re: Peut-être avec ce script bash
Posté par NeoX . Évalué à 4.
pourtant ton script dit
si l'argument est un fichier qui existe et que c'est un JPG
alors
supprime ce fichier
s'il existe un fichier.ARW
alors
supprime ce fichier
finsi
finsi
donc si dans son dossier il a des fichier1.JPG fichier1.ARW fichier2.JPG fichier2.ARW
et qu'il dit à son script
ca supprime le fichier1.JPG et le fichier1.ARW
ce qu'il veut c'est pouvoir selectionner les fichiers à supprimer (en les envoyant dans un dossier à part par exemple, voire en les supprimant reellement),
puis supprimer les fichiers ARW correspondants (ou orphelin si la version JPG n'existe plus)
[^] # Re: Peut-être avec ce script bash
Posté par Cyril Brulebois (site web personnel) . Évalué à 5.
Les trois premières lignes sont bien alambiquées, alors que ceci ferait l'affaire (et fonctionnerait quel que soit le shell)…
Debian Consultant @ DEBAMAX
[^] # Re: Peut-être avec ce script bash
Posté par MicP . Évalué à 3.
Effectivement, ça simplifierait les choses
Ce qui donnerait :
(J'en ai profité pour reformuler la ligne du premier
if
en utilisant un
-a
plutôt que le&&
)[^] # Re: Peut-être avec ce script bash
Posté par Stinouff . Évalué à 1.
Merci pour la piste ! Ça me permet de travailler mes scripts (tout à fait amateurs) et ça fluidifie mon travail. Merci ! :)
# Autre approche
Posté par Michaël (site web personnel) . Évalué à 5.
Je pense que l'approche d'effacer n'est pas la meilleure, il vaudrait mieux déplacer les fichiers ARW dans le même dossier que les fichiers JPEG qui leur correspondent. L'intérêt est que c'est une fonction qui a son utilité en soit, et qu'elle résout le problème: il suffit de déplacer les fichiers JPEG qu'on ne veut pas dans un dossier spécial, d'e faire suivre les fichiers ARW puis des procéder à l'effacement.
La logique serait, étant donné SRCDIR (dossier où étaient tous les fichiers) et TARGETDIR (fichier d'arrivée):
Des points bonus pour l'écriture d'un fichier “undo”, un shell script qui permet d'annuler la dernière opération! :-)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.