Me gustaría copiar cada archivo de una estructura de directorio a un directorio específico solo si el archivo no existe allí.
Obtuve la primera parte de esta pregunta de desbordamiento de pila :
find . -type f -exec cp {} /target-directory \;
¿Cómo puedo verificar si el archivo existe o no? Si no, copie el archivo, de lo contrario, omita.
                    
                        command-line
                                bash
                                files
                                find
                                
                    
                    
                        señor au
fuente
                
                fuente

Respuestas:
Puede usar el
-uinterruptor delcpcomando:o use el
rsynccomando con--ignore-existing:Ejemplo:
fuente
Su comando original se puede reescribir como:
La clave aquí es que llamamos a shell con comandos específicos y pasamos el archivo encontrado como
$1argumento. Sitest -e /target-directory/"$1"falla, eso significa que el archivo no existe, en cuyo casocpcopiará el archivo.En general, uno puede usar otros comandos, siempre que el comando pueda verificar la existencia de un archivo. Algunas de las otras alternativas:
/usr/bin/realpath -e /target-directory/"$1" > /dev/null || cp "$1" /target-directorystat >/dev/null /target-directory/"$1" || cp "$1" /target-directory/"$1"fuente
statprobar la existencia de archivos en Bash? ¿Notest -esería mucho más simple?Lea
man cpy use la--no-clobberopción paracp.fuente