como clonar uma lista de diretórios para outro diretório

0

Estou tentando clonar um diretório e seus subdiretórios em outro diretório. Eu tenho centenas de diretórios de música com subdiretórios que eu quero converter de flac para ogg. Eu quero que todas as subdiretórios de música em / Music sejam clonadas para / Music / Oggs / para que, quando eu fizer a conversão, todos os arquivos sejam gravados nos mesmos nomes de diretório. Aqui está o que eu tenho:

/ Music / Van_Halen_Discography / 1980 Mulheres e crianças primeiro /

O que eu preciso é o clone de diretórios para isso:

/ Music / Oggs / Van_Halen_Discography / 1980 Mulheres e crianças primeiro /

Eu tentei usar o 'find / Music -type d | cat > / Music / Oggs '

Mas não funcionou, o que estou perdendo? Obrigado

    
por Widgeteye The Terrible 13.09.2014 / 21:13

2 respostas

1

Você pode usar o rsync da seguinte forma.

 rsync -av -f"+ */" -f"- *" /path/to/Music/ /path/to/Music/oggs

Aqui -a diz ao rsync para recursar por dirs e preservar links, permissões e propriedade, enquanto v o torna detalhado. -f é um filtro com o primeiro argumento incluindo todos os diretórios e o segundo excluindo todos os arquivos. Eu sugiro experimentar um pequeno exemplo primeiro se você não estiver familiarizado com o rsync.

    
por 13.09.2014 / 21:38
0

Existe uma maneira simples, suponhamos que você esteja em ~/Music/ com o shell atual.

mkdir Oggs            # In case you do not have done before    
cp -rp !(Oggs) Oggs  
  • cp é o comando normal usado no Linux para copiar arquivos e diretórios
  • -rp ou se você preferir -r -p são opções para r ecurse através de diretórios e p reservar acessos de tempo, propriedades ...
    Use man cp para uma visão mais completa.
  • !(Oggs) Tricky com ! você nega o que está dentro dos parênteses: assim você está dizendo para copiar todo o arquivo e não Oggs para Oggs

Observação: isso requer shopt extglob on, se estiver desativado, use shopt -s extglob para ativá-lo.

    
por 16.09.2014 / 14:17

Tags