¿Cómo buscar archivos y copiarlos a una carpeta que no existe con un solo comando?

¿Cómo buscar archivos y copiarlos a una carpeta que no existe con un solo comando?

Por ejemplo:

find /usr -type f -name "*.txt" -exec cp -r {} ~/txts/ \;

Funciona bien en caso de que tengamos textos de directorio existentes.

Hasta donde puedo entender -cp no tiene banderaspara resolver este caso. ¿Quizás debería usar rsync o algo más?

Respuesta1

Buena pregunta, podrías probar esto:
primero cden /usr, esto se debe a que cuando usas una ruta absoluta (como /usr) con findsospecho que contendrá {}rutas completas.

find . -type f -a -name "*.txt" -a -exec install -D {} ~/texts/{} \;

Cuando ejecuto este comando, recibí el siguiente mensaje de error:

buscar: './share/doc/google-chrome-stable': Permiso denegado

El mensaje de error no significa que la operación falló en general, solo significa que findno se pudo ejecutar el comando en el ./share/doc/google-chrome-stabledirectorio.
Pero para mí, todos los demás archivos y sus rutas se copiaron y las rutas del directorio se crearon según fuera necesario.

Tras una investigación más exhaustiva, la causa del error fue

% ls -al --directory ./share/doc/google-chrome-stable 
drwx------ 2 root root 4096 Aug 21 12:45 ./share/doc/google-chrome-stable

información relacionada