É claro que minutos depois descubro um método fácil. rsync
tem uma opção --prune-empty-dirs
.
Eu tenho a seguinte árvore
# upper letters = directory
# lower letters = files
A
|-- B
|-- C
|-- D
|-- e <= file
|-- F
|-- G
Eu preciso copiar esta árvore para outro destino, ignorando recursivamente todos os diretórios vazios. Então o destino acaba parecendo:
C
|-- e
Como você faria isso com unix, rsync, etc?
É claro que minutos depois descubro um método fácil. rsync
tem uma opção --prune-empty-dirs
.
Existem várias soluções para este problema (retirado de esta página da web ):
Esta opção usa o comando mkdir com o comando find. Este método também requer que você esteja dentro da pasta de origem enquanto executa o comando.
bash$ cd /path/to/source && find . -type d -exec mkdir -p /path/to/dest/{} ;
Usando o find e o cpio
bash$ find /path/to/source -type d | cpio -pd /path/to/dest/
Usando o Rsync
bash$ rsync -a --include '*/' --exclude '*' /path/to/source /path/to/dest
OR
bash$ rysnc -a -f"+ */" -f"- *" /path/to/source /path/to/dest