Potresti usare rsync (esegue anche la copia locale)
rsync -r --ignore-existing --include=*/ --include=*.js --exclude=* source/ destination
-r
per ricorrere nelle directory,--ignore-existing
per ignorare i file esistenti nella destinazione,- il
include
eexclude
filtri significano:includono tutte le directory, includono tutti i file *.js, escludono il resto; il primo include è necessario, altrimenti l'esclusione finale escluderà anche le directory prima che il loro contenuto venga scansionato.
Infine, puoi aggiungere un -P
se vuoi vedere i progressi, un --list-only
se vuoi vedere cosa copierebbe senza effettivamente copiare, e un -t
se vuoi conservare i timestamp.
Questo non è correlato, ma ho imparato il comando rsync di recente, quando ho spostato 15 anni di documenti da una partizione all'altra. Fiducioso che i miei file fossero lì, ho quindi cancellato la vecchia partizione e inserito altre cose; Mi sono reso conto in seguito di aver perso tutti i timestamp e ho scoperto il flag -t. Volevo solo condividere la mia angoscia :'(
Ciò è ottenibile anche utilizzando cp. Vedi qui:
sudo cp -vnpr /xxx/* /yyy
xxx =fonte
yyy =destinazione
v =prolisso
n =no clobber (nessuna sovrascrittura)
p =conserva i permessi
r =ricorsivo
Guardando le pagine man sembra che tu voglia il -n
opzione.
-n, --no-clobber
do not overwrite an existing file (overrides the previous -i option)