J'ai un répertoire qui contient un tas d'autres dossiers contenant des fichiers CoffeeScript/JavaScript. Je suis capable de compiler les fichiers CoffeeScript dans un nouveau dossier avec la même structure de dossier.
Ce que je veux faire, c'est copier tous les fichiers * .js du dossier source dans le dossier de destination de manière récursive. Je ne veux pas non plus écraser les fichiers déjà présents dans le dossier de destination. Des idées sur la façon d'accomplir cela?
J'ai essayé d'utiliser cp -n source/**.js desination/
et cp -Rn source/**.js desination/
après avoir examiné une autre question similaire, mais cela ne semble pas fonctionner.
Une idée comment accomplir ceci?
Vous pouvez utiliser rsync (il fait aussi la copie locale)
rsync -r --ignore-existing --include=*/ --include=*.js --exclude=* source/ destination
-r
pour recurse dans des répertoires,--ignore-existing
pour ignorer les fichiers existants dans la destination,include
et exclude
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 souhaitez suivre les progrès, un --list-only
si vous souhaitez voir ce qu'il copiera sans copier, et un -t
si vous souhaitez conserver les horodatages.
Ceci n'est pas lié, mais j'ai récemment appris la commande rsync, 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 ajouté d'autres éléments; J'ai réalisé plus tard que j'avais perdu tous les horodatages et découvert le drapeau -t. Je voulais juste partager ma détresse: '(
Ceci est également réalisable en utilisant cp. Vois ici:
Sudo cp -vnpr /xxx/* /yyy
xxx = source
yyy = destination
v = verbeux
n = pas de clobber (pas d'écrasement)
p = préserver les autorisations
r = récursif
En regardant les pages de manuel, il semble que vous souhaitiez l’option -n
.
-n, --no-clobber
do not overwrite an existing file (overrides the previous -i option)