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.?

Dane O'Connor
fuente

Respuestas:

29

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

Dane O'Connor
fuente
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

VL-80
fuente