Copiar a árvore de diretórios sem diretórios vazios?

17

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?

    
por Dane O'Connor 26.05.2014 / 22:14

2 respostas

27

É claro que minutos depois descubro um método fácil. rsync tem uma opção --prune-empty-dirs .

    
por 26.05.2014 / 22:19
1

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

    
por 27.05.2014 / 02:01