Actualmente sé cómo copiar archivos que no existen en el directorio de destino. Esto me permite copiar de src a dstcomo me gustaría.
Sin embargo, ahora quiero copiar de srca dst/2016-01-05, pero sólo en los archivos srcque no existen en cualquier lugar dentro dst.
Ejemplo
Supongamos que la situación de inicio es
src/f1.txt
src/f2.txt
src/f3.txt
dst/2016-01-04/f1.txt
dst/2016-01-05/f0.txt
Luego, después de hacer la copia, la situación final debería ser:
src/f1.txt
src/f2.txt
src/f3.txt
dst/2016-01-04/f1.txt
dst/2016-01-05/f0.txt
dst/2016-01-05/f2.txt
dst/2016-01-05/f3.txt
En general, no me gustaría sobrescribir los archivos existentes. Incluso si la fuente se actualiza.

src/? Si es así, ¿cómo se manejandst/? ¿Está el directorio codificado por fecha inmediatamente debajodst/o entre el directorio de origen y el archivo de destino?src. En eldstdirectorio, crearé una carpeta con la fecha actual, por ejemplodst/2016-01-04, y pondré todos los archivos allí que aún no existíandst. (No quiero depender de cuánto tiempo han existido los archivossrc)Respuestas:
Lo siguiente debería hacer el truco: -
Notas:
for f in src/*; ..., el usolselimina el directorio del nombre de origen e-Aincluye los nombres de archivo que comienzan con.,.src/, deberá usarlosfinden el directorio de origen y quitarsrc/el nombre con-printf %P\\n.linecomando que puede usarwhile read f; ..., pero esto no funciona para los nombres de archivo con espacios en blanco iniciales y finales (inclusolinefalla si el nombre del archivo contiene un carácter de nueva línea; para esto necesitaría usarfind -print0yxargs -0).fuente