varios todos renombrar otro mover los directorio copiar comando archivos archivo linux bash cp

todos - Linux cómo copiar pero no sobrescribir?



mover varios archivos en linux (6)

Considere el uso de rsync .

rsync -a -v --ignore-existing src dst

Según los comentarios, rsync -a -v src dst no es correcto porque actualizará los archivos existentes.

Quiero cp un directorio, pero no quiero sobrescribir ningún archivo existente, incluso si son más antiguos que los archivos copiados. Y quiero hacerlo completamente inactivo ya que esto será parte de un script de Crontab Bash. ¿Algunas ideas?


Esto funcionará en RedHat:

false | cp -i source destination 2>/dev/null

Actualizar y no sobrescribir es algo diferente.


Para las personas que descubren que no tienen una opción ''n'' (como yo en RedHat), puede usar cp -u para escribir solo el archivo si la fuente es más nueva que la existente (o no existe una) .

[editar] Como se mencionó en los comentarios, esto sobrescribirá los archivos más antiguos, por lo que no es exactamente lo que quería el OP. Usa la respuesta de Ceving para eso.


Tomado de la página del manual :

-n, --no-clobber do not overwrite an existing file (overrides a previous -i option)

Ejemplo:

cp -n myoldfile.txt mycopiedfile.txt


Alpine Linux: la siguiente respuesta es solo para el caso de un solo archivo: en alpine cp -n no funciona (y false | cp -i ... también), así que la solución que funciona en mi caso es la siguiente:

if [ ! -f env.js ]; then cp env.example.js env.js; fi

En el ejemplo anterior, verificamos si el archivo env.js existe y si no, copiamos env.example.js como env.js


cp -n

Es lo que quieres. Ver la página del manual.