Parcours recursif de répertoire et création de liens [Shell/sh] - Shell/Batch - Programmation
Marsh Posté le 28-01-2010 à 17:13:20
Bon,
j'ai finalement fait le script en PHP.
mais si y'en a qui veulent tenter le script shell, je ne refuse pas.
Marsh Posté le 28-01-2010 à 17:18:13
ca doit se faire oui... (un truc a base de find, de test et de mkdir)
c'est quoi le but fonctionnel? parce que la je vois pas trop, mais je pense que ca peut aider à trouver une solution intelligente.
Marsh Posté le 31-01-2010 à 12:19:34
itou a écrit : Bon, |
http://fr.lang.free.fr/cours/Shell_v2.0.pdf page 72
Marsh Posté le 04-08-2011 à 18:29:56
Bonjour,
je redéterre ce topic car ma fonction php ne marche plus sur certain serveur.
Je reviens donc sur un script shell ou plus simplement sur une seule ligne de commande :
Je commence donc ainsi :
cd parent2
find -type d | xargs -0 echo ...
ça me liste donc que les répertoire et renvoi le nom du répertoire à echo pour les affichier.
de là, il me faudrait donc faire un ln -s /parent1/[argument de xargs] /parent2[argument de xargs]/[nomdu lien]
mais comment faire ?
merci
Marsh Posté le 04-08-2011 à 22:57:23
ah merci, c'est presque ça, j'avais cherché à comprendre le -i{} sans succes. Je vois maintenant comment ça fonctionne.
Bon pour mon truc c'est presque bon, faut juste que j'arrive à enlever le "."
find -type d | xargs -n1 -t -i{} ln -s /parent1{} /parent2{}/[nomdu lien]
me donne
ln -s /parent1./dossier1 /parent2./dossier1/lien_sur_parent1
edit: ok je pense avoir trouvé :
cd parent1
find -type d | cut -c2- | xargs -n1 -t -i{} ln -s /parent2{} /parent1{}/[nomdu lien]
Edit 2 : aarrgh, cette commande ne peut pas se relancer deux fois : ça fait des liens sur des liens à ne plus en finir !!! tester s'il y a déjà le lien dans le répertoire ? comment faire ?
merci
Marsh Posté le 06-08-2011 à 23:52:49
ok,
j'ai fini par passer par un script bash.
------------------
for f in `find -type d | cut -c2-`
do
echo -e "\nrepertoire : $f"
if [ -d ".$f/lien" ]
then
echo "Liens existent"
else
echo "creation de lien vers /parent2$f"
ln -s /parent2$f /parent1$f/lien
fi
done
---------------------------
Marsh Posté le 28-01-2010 à 00:06:26
Bonjour,
Je tente de mettre en place une structure de répertoire ayant des liens symbolique d'une autre même structure de répertoire d'un autre dossier :
càd que j'ai au départ :
parent1
-------dossier1
---------------sous_dossier1
-------dossier2
-------dossier3
---------------sous_dossier3
parent2
-------dossier1
---------------sous_dossier1
-------dossier2
-------dossier3
---------------sous_dossier3
ce que je voudrais faire dans le "parent2" :
parent2
-------dossier1
-------lien_sur_parent1_dossier1
---------------sous_dossier1
---------------lien_sur_parent1_dossier1_sous_dossier1
-------dossier2
-------lien_sur_parent1_dossier2
-------dossier3
-------lien_sur_parent1_dossier3
---------------sous_dossier3
---------------lien_sur_parent1_dossier3_sous_dossier3
Je compte faire ça en PHP mais il me semblerait qu'on pourrait le faire en shell (linux bash sh).
Quelqu'un pourrait me donner un script de départ ?
est-ce qu'un find est bien approprié ?
Le but aussi c'est que plus tard, si je rajoute des dossier dans parent1 (et bien sur dans parent2), le script ne recrée que les liens manquants.
Merci.
Message édité par itou le 05-08-2011 à 09:55:48