En gros tu rencontres un début d'une séquence (genre 091001.dpx) et là tu essayes de déplacer tous les fichiers qui se suivent (091002.dpx, 091003.dpx .. 091050.dpx) dans un répertoire 091001.dpx (par exemple) ?
Je te propose de faire appel au fichier trie.sh suivant :
#!/bin/bash
STORE=/tmp/sort
previous_id=0
current_rep=""
for fic in $(ls *.dpx | sort)
do
current_id=$(echo $fic | sed 's/[^0-9]*//g' | sed 's/^0*//g')
((id=$previous_id+1))
if [ $id = $current_id ]; then
echo "$fic : appartient à la séquence en cours ($sequence)"
cp $fic $STORE/$sequence
else
sequence=$(echo $fic | sed 's/[^0-9]*//g')
echo "$fic : nouvelle séquence ($sequence)"
mkdir -p $STORE/$sequence
cp $fic $STORE/$sequence
fi
((previous_id=$current_id))
done
Tu le place dans le répertoire où se trouve les fichiers à trier et tu remplaces la valeur de la variable STORE par ce que tu veux.
Chez moi, ça donne ça :
Contenu du répertoire à trier :
[root@brn91-1-82-234-1-119 test]# pwd
/root/test
[root@brn91-1-82-234-1-119 test]# ls
091001.dpx 091003.dpx 091005.dpx 191002.dpx 191004.dpx trie.sh*
091002.dpx 091004.dpx 191001.dpx 191003.dpx 191005.dpx trie.sh~
[root@brn91-1-82-234-1-119 test]# ./trie.sh
091001.dpx : nouvelle séquence (091001)
091002.dpx : appartient à la séquence en cours (091001)
091003.dpx : appartient à la séquence en cours (091001)
091004.dpx : appartient à la séquence en cours (091001)
091005.dpx : appartient à la séquence en cours (091001)
191001.dpx : nouvelle séquence (191001)
191002.dpx : appartient à la séquence en cours (191001)
191003.dpx : appartient à la séquence en cours (191001)
191004.dpx : appartient à la séquence en cours (191001)
191005.dpx : appartient à la séquence en cours (191001)
[^] # Re: Que veux-tu faire exactement ?
Posté par yannig (site web personnel) . En réponse au message script pour gerer le deplacement de sequence d'images. Évalué à 2.
Je te propose de faire appel au fichier trie.sh suivant :
#!/bin/bash
STORE=/tmp/sort
previous_id=0
current_rep=""
for fic in $(ls *.dpx | sort)
do
current_id=$(echo $fic | sed 's/[^0-9]*//g' | sed 's/^0*//g')
((id=$previous_id+1))
if [ $id = $current_id ]; then
echo "$fic : appartient à la séquence en cours ($sequence)"
cp $fic $STORE/$sequence
else
sequence=$(echo $fic | sed 's/[^0-9]*//g')
echo "$fic : nouvelle séquence ($sequence)"
mkdir -p $STORE/$sequence
cp $fic $STORE/$sequence
fi
((previous_id=$current_id))
done
Tu le place dans le répertoire où se trouve les fichiers à trier et tu remplaces la valeur de la variable STORE par ce que tu veux.
Chez moi, ça donne ça :
Contenu du répertoire à trier :
[root@brn91-1-82-234-1-119 test]# pwd
/root/test
[root@brn91-1-82-234-1-119 test]# ls
091001.dpx 091003.dpx 091005.dpx 191002.dpx 191004.dpx trie.sh*
091002.dpx 091004.dpx 191001.dpx 191003.dpx 191005.dpx trie.sh~
[root@brn91-1-82-234-1-119 test]# ./trie.sh
091001.dpx : nouvelle séquence (091001)
091002.dpx : appartient à la séquence en cours (091001)
091003.dpx : appartient à la séquence en cours (091001)
091004.dpx : appartient à la séquence en cours (091001)
091005.dpx : appartient à la séquence en cours (091001)
191001.dpx : nouvelle séquence (191001)
191002.dpx : appartient à la séquence en cours (191001)
191003.dpx : appartient à la séquence en cours (191001)
191004.dpx : appartient à la séquence en cours (191001)
191005.dpx : appartient à la séquence en cours (191001)
et le résultat du trie :
[root@brn91-1-82-234-1-119 test]# ll /tmp/sort/*
/tmp/sort/091001:
total 0
-rw-r--r-- 1 root root 0 aoû 25 01:02 091001.dpx
-rw-r--r-- 1 root root 0 aoû 25 01:02 091002.dpx
-rw-r--r-- 1 root root 0 aoû 25 01:02 091003.dpx
-rw-r--r-- 1 root root 0 aoû 25 01:02 091004.dpx
-rw-r--r-- 1 root root 0 aoû 25 01:02 091005.dpx
/tmp/sort/191001:
total 0
-rw-r--r-- 1 root root 0 aoû 25 01:02 191001.dpx
-rw-r--r-- 1 root root 0 aoû 25 01:02 191002.dpx
-rw-r--r-- 1 root root 0 aoû 25 01:02 191003.dpx
-rw-r--r-- 1 root root 0 aoû 25 01:02 191004.dpx
-rw-r--r-- 1 root root 0 aoû 25 01:02 191005.dpx
Voilà, j'espère que ça pourra t'inspirer et t'aider.