J'ai un répertoire qui contient un tas d'autres dossiers contenant des fichiers CoffeeScript / JavaScript. Je suis en mesure de compiler les fichiers CoffeeScript dans un nouveau dossier avec la même structure de dossiers fine.
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 qui sont déjà présents dans le dossier de destination. Avez-vous 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 regardé une autre question similaire, mais cela ne semble pas fonctionner.
Une idée de comment y parvenir?
linux
file-transfer
cp
AlbertEngelB
la source
la source
Réponses:
Vous pouvez utiliser rsync (il fait également une copie locale)
-r
pour rentrer dans les répertoires,--ignore-existing
ignorer les fichiers existants dans la destination,include
etexclude
signifient: inclure tous les répertoires, inclure tous les fichiers * .js, exclure les autres; 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 regarder la progression, un--list-only
si vous voulez voir ce qu'il copiera sans réellement copier et un-t
si vous voulez conserver les horodatages.Ce 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 choses; 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: '(
la source
rsync
est apparemment la bombe.Ceci est également réalisable en utilisant cp. Vois ici:
xxx = source
yyy = destination
v = verbeux
n = pas de clobber (pas d'écrasement)
p = conserver les autorisations
r = récursif
la source
En regardant les pages de manuel, il semble que vous vouliez l'
-n
option.la source
Ma distribution n'était pas disponible, donc:
xxx = source
yyy = destination
v = verbeux
i = interactif (invite à écraser) | c'est pourquoi la commande est précédée de "echo n |"
p = conserver les autorisations
r = récursif
la source