Vous pouvez utiliser rsync (il fait aussi une copie locale)
rsync -r --ignore-existing --include=*/ --include=*.js --exclude=* source/ destination
-r
pour revenir dans les répertoires,--ignore-existing
pour ignorer les fichiers existants dans la destination,- le
include
etexclude
les filtres signifient :inclure tous les répertoires, inclure tous les fichiers *.js, exclure le reste ; la première inclusion est nécessaire, sinon l'exclusion finale exclura également les répertoires avant que leur contenu ne soit analysé.
Enfin, vous pouvez ajouter un -P
si vous voulez suivre la progression, un --list-only
si vous voulez voir ce qu'il copierait sans copier réellement, et un -t
si vous souhaitez conserver les horodatages.
Ce n'est pas lié, mais j'ai appris la commande rsync récemment, lorsque j'ai déplacé 15 ans de documents d'une partition à une autre. Confiant que mes fichiers étaient là, j'ai ensuite effacé l'ancienne partition et y ai mis d'autres éléments; J'ai réalisé plus tard que j'avais perdu tous les horodatages et j'ai découvert le drapeau -t. Je voulais juste partager ma détresse :'(
Ceci est également réalisable en utilisant cp. Voir ici :
sudo cp -vnpr /xxx/* /yyy
xxx =origine
aaa =destination
v =verbeux
n =pas de clobber (pas d'écrasement)
p =conserver les autorisations
r =récursif
En regardant les pages de manuel, il semble que vous vouliez le -n
option.
-n, --no-clobber
do not overwrite an existing file (overrides the previous -i option)