#/bin/bash #(ne pas utiliser sh car l'IFS \n ne fonctionne pas!!!! ) #Auteur Bertrand VANDEPORTAELE 2013 #Ce script permet de construire une arborescence dans un dossier vide (définit par $DEST) dans laquelle des liens dynamiques #vont pointer vers des fichiers/dossiers respectant la même arborescence mais sur plusieurs disques distincts #Utile pour un média center avec plusieurs disques, on peut ainsi lister dans une même dossier le contenu des différents disque et naviguer comme s'il n'y avait qu'un disque #exemple: 2 disques durs /media/HD1 et /media/HD2, contenant chacun les dossiers hd et 3D #on cree sur ~/films/ les dossiers hd et 3D #puis on crée des liens symboliques de tous les fichiers /media/HD1/hd et /media/HD2/hd vers ~/films/hd # et de tous les fichiers /media/HD1/sd et /media/HD2/sd vers ~/films/sd #pour cela régler #DEST="~/films/" #LISTCAT=$'hd\nsd\n' #LISTDRV=$'/media/HD1\n/media/HD2\n' # il faut que la partition destination supporte les liens dynamiques #http://www.commentcamarche.net/faq/5027-comment-lire-un-fichier-ligne-par-ligne #http://bash.cyberciti.biz/guide/$IFS old_IFS=$IFS # sauvegarde de l'ancien séparateur de champ IFS=$'\n' #le séparateur par defaut (espace) ne va pas car les noms de fichiers listés peuvent en contenir mais doivent être traités en une seule fois #on règle un nouveau séparateur de champ, le caractère fin de ligne #emplacement pour stocker les liens dynamiques, doit pointer sur un dossier vide car on va y effacer tout les contenus des #dossiers catégories DEST="/home/bvdp/films/" #liste de noms de dossiers correspondant à des catégories #il faut le $ au début pour que le \n soit interpreté correctement comme un IFS LISTCAT=$'hd\nsd\n3D\nseries\n3Dsound\n' #liste de noms de dossiers ou rechercher les catégories LISTDRV=$'/media/HD2TO/\n/media/HD2TO2/\n/media/HD2TO3/\n/media/HD2TO4/\n/media/HD3TO1/\n/media/JY500GO\n' echo destination=$DEST #-------------------------------------------------------- #-------------------------------------------------------- #-------------------------------------------------------- #-------suppression des fichiers existants et création des dossiers si besoin--------------- rm $DEST/lnscript for i in $LISTCAT do echo $i rm $DEST/$i/* mkdir $DEST/$i #au cas ou ils n'existeraient pas done #-------------------------------------------------------- for i in $LISTCAT do echo $i #echo "next" for j in $LISTDRV do echo $j #echo "noxt" for fich in `ls $j/$i` do echo "ln -s \"$j/$i/$fich\" \"$DEST/$i/$fich\"" >>$DEST/lnscript echo $fich done done done #-------------------------------------------------------- bash $DEST/lnscript #éxecute le script de génération des liens symboliques IFS=$old_IFS # rétablissement du séparateur de champ par défaut