#1 Le 26/10/2012, à 22:02
- Xylo
script tri fichiers et renommage
Bonsoir,
je cherche à pallier à un défaut de shotwell qui envoie les fichers photos et vidéos dans le même répertoire lors de l'importation depuis un APN ou une caméra.
J'ai fait un script qui permet de récupérer les vidéos et de les copier dans un autre répertoire. Seul pb, si des fichiers avec le même nom sont déjà dans ce répertoire, ils sont écrasés et remplacé par le nouveau fichier....ce qui arrive souvent car mes vidéos sont renommées à partir de 00000.MTS après le formatage de ma carte SD.
Je voulais donc améliorer mon mini script actuel et ajouter une étape de renommage afin d'éviter d'avoir 2 fichiers avec le même nom, par exemple en ajoutant la date dans le nom mais je ne sais pas comment procéder.
Voici mon scritp actuel plutôt basique :
#!/bin/bash
cd /home/USER/Images/"REPERTOIRE-IMPORTATION-SHOTWELL"
find . \( -name "*.MTS" -o -name "*.mts" -o -name "*.avi" -o -name "*.AVI" -o -name "*.mpg" -o -name "*.MPG" -o -name "*.mov" -o -name "*.MOV" -o -name "*.wmv" -o -name "*.WMV" \) -exec mv {} /home/USER/Vidéos/"A_trier"/ \;
exit
je pensais passer par un fichier temporaire pour stocker les fichiers avant leur renommage genre /home/USER/Vidéos/tmp/ qui serait effacé une fois l'action de renommage et de copie dans le dossier A_trier effectuée.
Si vous avez une idée plus simple ou une piste je suis preneur, j'avoue galérer un peu avec les scripts shell et malheureusement je n'ai pas le temps actuellement de m'enterrer sur le sujet.
Merci pour vos contrib
Netbook Asus Eeepc 1015BX : Crunchbang Wardolf #! / Debian Wheezy + Xfce
PC fixe : triple boot : Xubuntu 12.04 / Debian squeeze / Seven
Hors ligne
#2 Le 27/10/2012, à 04:55
- nesthib
Re : script tri fichiers et renommage
Au lieu d'utiliser une suite de -name avec minuscules et majuscules tu peux utiliser :
-iname '*.avi' -iname …
ou mieux
-iregex '.*.\(avi\|mpg\|mov\)'
pour tester si les fichiers existent déjà, tu peux passer la sortie de find à un bloc de code :
R_SOURCE=/rep/source
R_DEST=/rep/destination
while read fichier
do
echo "on travaille sur le fichier ${fichier}"
increment=0
f="${fichier##*/}"
f1="${f%.*}"
f2="${f##*.}"
while [ -f "${R_DEST}/${f}" ]
do
echo "${R_DEST}/${f}" existe déjà
f="$f1-$((++increment)).$f2"
done
mv "${fichier}" "${f}"
done < <(find "${R_SOURCE}" -iregex '.*.\(avi\|mpg\|mov\)')
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#3 Le 27/10/2012, à 15:54
- Xylo
Re : script tri fichiers et renommage
Merci nesthib c'est pile poil ce que je voulais. J'ai par contre eu un peu de mal à comprendre mais les fichiers attérissent dans le répertoire d'où est lancé le script (alors que dans mon script tout pourris les fichiers étaient copiés dans un répertoire (toujours le même).
en fait ton script est bien mieux, et il incrémente donc les fichiers quand un fichiers a déjà le même nom dans le répertoire.
Super !
Je vais essayer de comprendre un peu mieux ton script mais il répond parfaitement à ma demande !
Netbook Asus Eeepc 1015BX : Crunchbang Wardolf #! / Debian Wheezy + Xfce
PC fixe : triple boot : Xubuntu 12.04 / Debian squeeze / Seven
Hors ligne
#4 Le 27/10/2012, à 16:28
- Postmortem
Re : script tri fichiers et renommage
Salut,
Pour que ça aille dans le repertoire destination, il manque juste le repertoire dans la commande mv :
mv "${fichier}" "${R_DEST}/${f}"
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#5 Le 27/10/2012, à 20:19
- nesthib
Re : script tri fichiers et renommage
Effectivement, petit oubli. Merci pour la correction.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne