Tengo un directorio que contiene un montón de otras carpetas que contienen archivos CoffeeScript / JavaScript. Puedo compilar los archivos CoffeeScript en una nueva carpeta con la misma estructura de carpetas bien.
Lo que quiero hacer es copiar todos los archivos * .js en la carpeta de origen a la carpeta de destino de forma recursiva. Tampoco quiero sobrescribir ningún archivo que ya esté presente en la carpeta de destino. ¿Alguna idea de cómo lograr esto?
Intenté usar cp -n source/**.js desination/
y cp -Rn source/**.js desination/
después de mirar otra pregunta similar, pero no parece estar funcionando.
¿Alguna idea de cómo lograr esto?
linux
file-transfer
cp
AlbertEngelB
fuente
fuente
Respuestas:
Puede usar rsync (también hace copia local)
-r
recurrir a directorios,--ignore-existing
para ignorar los archivos existentes en el destino,include
yexclude
significan: incluir todos los directorios, incluir todos los archivos * .js, excluir el resto; se necesita la primera inclusión; de lo contrario, la exclusión final también excluirá los directorios antes de escanear su contenido.Finalmente, puede agregar un
-P
si desea ver el progreso, un--list-only
si desea ver qué copiaría sin copiar realmente y un-t
si desea conservar las marcas de tiempo.Esto no está relacionado, pero aprendí el comando rsync recientemente, cuando moví 15 años de documentos de una partición a otra. Confiando en que mis archivos estaban allí, limpié la vieja partición y puse algunas otras cosas allí; Más tarde me di cuenta de que perdí todas las marcas de tiempo y descubrí la bandera -t. Solo quería compartir mi angustia: '(
fuente
rsync
Al parecer es la bomba.Esto también se puede lograr con cp. Mira aquí:
xxx = fuente
aaa = destino
v = detallado
n = sin clobber (sin sobrescribir)
p = preservar permisos
r = recursivo
fuente
Mirando las páginas man parece que quieres la
-n
opción.fuente
Mi distribución no tenía clobber disponible, así que:
xxx = fuente
aaa = destino
v = detallado
i = interactivo (solicitud para sobrescribir) | por eso el comando va precedido de "echo n |"
p = preservar permisos
r = recursivo
fuente