Allez hop, un petit test, en ajoutant un echo dans le -exec pour juste voir les commandes qui seraient effectuées :
Ce n'est pas parce que des commandes sont passes au shell qu'elles ont forcement une action effective. Je te conseille d'utiliser l'option -v de cp qui te montrera exactement ce qu'il fait.
cp -r (récursif) testdir testdest/testdir copie tout le répertoite testdir, puis cp -r testdir/C testdest/testdir/C copie à nouveau le répertoire testdir/C...
Plutôt mortel sur un gros répertoire avec unr arborescence profonde !
Qui plus est, cp -r testdir testdest/testdir va avoir copié le répertoire testdir/B dans la foulée...
Non. Je voudrais bien que tu m'expliques comment cp peut se permettre d'ecraser des fichiers sans qu'on lui demande explicitement via l'option -f. Fais le test, tu veras que les fichiers ne sont pas ecrases, et donc copies une seule fois, meme les timestamps ne changent pas d'ailleurs.
La suppression du -r poserait des problèmes avec les répertoires (cp ne copierait pas les répertoires et la tentative de copie dans un répertoire inexistant causerait une erreur).
En fait, un -R ou un -a serait plus judicieux, mais ca ne change pas le principe.
C'est plutôt le reste qu'on copierait deux fois
Comment ca ?
tar cpf - --exclude B testdir | tar xpvf - -C testdest
[^] # Re: Une seule fois ???
Posté par Jérôme Pinot (site web personnel) . En réponse au message [Terminal] Exclure un sous-dossier d'une copie recursive. Évalué à 1.
Ce n'est pas parce que des commandes sont passes au shell qu'elles ont forcement une action effective. Je te conseille d'utiliser l'option -v de cp qui te montrera exactement ce qu'il fait.
cp -r (récursif) testdir testdest/testdir copie tout le répertoite testdir, puis cp -r testdir/C testdest/testdir/C copie à nouveau le répertoire testdir/C...
Plutôt mortel sur un gros répertoire avec unr arborescence profonde !
Qui plus est, cp -r testdir testdest/testdir va avoir copié le répertoire testdir/B dans la foulée...
Non. Je voudrais bien que tu m'expliques comment cp peut se permettre d'ecraser des fichiers sans qu'on lui demande explicitement via l'option -f. Fais le test, tu veras que les fichiers ne sont pas ecrases, et donc copies une seule fois, meme les timestamps ne changent pas d'ailleurs.
La suppression du -r poserait des problèmes avec les répertoires (cp ne copierait pas les répertoires et la tentative de copie dans un répertoire inexistant causerait une erreur).
En fait, un -R ou un -a serait plus judicieux, mais ca ne change pas le principe.
C'est plutôt le reste qu'on copierait deux fois
Comment ca ?
tar cpf - --exclude B testdir | tar xpvf - -C testdest
Ca, ca marche \o/