#!/bin/sh # Utilise metaflac pour effectuer des actions de copie ou déplacement de champ à champ sur les fichiers FLAC. # Lancer ce script sans argument pour afficher son utilisation. print_usage() { echo "Utilisation :" echo " $0 [ [...] ]" echo "ACTION : copy | move | rmcopy | mvcopy" echo " copy : chaque occurrence de SRC_FIELD est dupliquée pour créer une occurrence de DST_FIELD ; toutes les occurrences existantes de SRC_FIELD et de DST_FIELD sont conservées." echo " move : chaque occurrence de SRC_FIELD est déplacée pour créer une occurrence de DST_FIELD ; les occurrences existantes de DST_FIELD sont conservées." echo " rmcopy : les occurrences existantes de DST_FIELD sont supprimées, puis chaque occurrence de SRC_FIELD est dupliquée pour créer une occurrence de DST_FIELD ; les occurrences de SRC_FIELD sont conservées." echo " rmmove : les occurrences existantes de DST_FIELD sont supprimées, puis chaque occurrence de SRC_FIELD est déplacée pour créer une occurrence de DST_FIELD." exit 1 } # Bon nombre d'arguments ? if [ $# -lt 4 ] ; then echo "Mauvais nombre d'arguments !" print_usage fi ACTION=$1 shift # Type d'action connue ? case $ACTION in copy) ;; move) ;; rmcopy) ;; rmmove) ;; *) echo "Action inconnue !" ; print_usage ;; esac SRC_FIELD=$1 shift DST_FIELD=$1 shift echo "Champ source : $SRC_FIELD" echo "Champ destination : $DST_FIELD" echo "Action : $ACTION" echo "Traitement des fichiers..." if echo $ACTION | egrep '^rm' >/dev/null ; then echo "Suppression du champ $DST_FIELD sur tous les fichiers..." metaflac --remove-tag=$DST_FIELD "$@" fi for file in "$@" ; do echo "Fichier : $file" metaflac --show-tag=$SRC_FIELD "$file" | sed 's/^[A-Z]\+=//' | while read c1 ; do metaflac --set-tag=$DST_FIELD="$c1" "$file" done done if echo $ACTION | egrep 'move$' >/dev/null ; then echo "Suppression du champ $SRC_FIELD sur tous les fichiers..." metaflac --remove-tag=$SRC_FIELD "$@" fi