Copiar árbol de directorios sin directorios vacíos?


17

Tengo el siguiente árbol

# upper letters = directory
# lower letters = files
A
|-- B
|-- C
    |-- D
    |-- e <= file
|-- F
    |-- G

Necesito copiar este árbol a otro destino, ignorando recursivamente todos los directorios vacíos. Entonces el destino termina pareciéndose a:

C
|-- e

¿Cómo haría esto con unix, rsync, etc.?

Respuestas:


29

Por supuesto, minutos después descubro un método fácil. rsyncTiene una --prune-empty-dirsopción.


1

Hay varias soluciones a este problema (tomado de esta página web ):

Esta opción usa el comando mkdir con el comando find. Este método también requiere que esté dentro de la carpeta de origen mientras ejecuta el comando.

bash$ cd /path/to/source && find . -type d -exec mkdir -p /path/to/dest/{} ;

Usando find y cpio

bash$ find /path/to/source -type d | cpio -pd /path/to/dest/

Usando Rsync

bash$ rsync -a --include '*/' --exclude '*' /path/to/source /path/to/dest

O

bash$ rysnc -a -f"+ */" -f"- *" /path/to/source /path/to/dest

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.