Substituição do comando DOS xcopy

Substituição do comando DOS xcopy

No DOS existe o comando

xcopy /s *.mp3 ..\TEMP2

Como posso fazer isso no Ubuntu?

cp -r *.mp3 ../TEMP2

copiará recursivamente todos os arquivos mp3, infelizmente sem o caminho por causa do *.mp3filtro.

cp -r *.* ../TEMP2

copiará o caminho, mas não poderá ficar limitado a arquivos mp3

Dei uma olhada no rsync, mas não entendi.

Responder1

O poder das ferramentas no Ubuntu é que você pode combiná-las. O próximo comando encontra todos os arquivos .mp3 no diretório atual e seus subdiretórios e os copia para a ../TEMP2/pasta, preservando os caminhos:

find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \;
  • find -iname '*.mp3'- encontra todos os arquivos que terminam com .mp3(sem distinção entre maiúsculas e minúsculas) e
    • -exec- executa um comando para cada partida:
      • install -D {} ../TEMP2/{}- copia o arquivo correspondente para ../TEMP/preservar o caminho. ( {}é substituído pelo caminho incluindo o nome do arquivo)
    • \;- finaliza o -execcomando

Se você deseja obter o progresso, adicione -ls("lista") ao comando antes -exec. Também pode ser colocado depois \;, mas nesse caso o nome é mostrado após ser copiado. Exemplos:

find -iname '*.mp3' -ls -exec install -D {} ../TEMP2/{} \;
find -iname '*.mp3' -exec install -D {} ../TEMP2/{} \; -ls

Responder2

Existem várias opções, mas nenhuma é realmente simples, receio…

sincronizar novamente

rsync -r --include="*/" --include="*.mp3" --exclude="*" --prune-empty-dirs . ../TEMP2

Isso indica para excluir todos os arquivos ( exclude="*"), mas procurar em todos os diretórios ( include="*/") e incluir todos os arquivos mp3 ( include="*.mp3"). Se você não deseja copiar diretórios que não contenham arquivos mp3, a --prune-empty-dirsopção também é necessária.

fecho eclair

zip -R archive.zip "*.mp3"
unzip -d ../TEMP2 archive.zip && rm archive.zip

O primeiro comando cria um arquivo com todos os arquivos mp3, o segundo descompacta o conteúdo no diretório de destino e exclui o arquivo se for bem-sucedido.

encontrar

find . -iname "*.mp3" -exec install -D {} ../TEMP2/{} ";"

Isso encontrará todos os arquivos mp3 e os copiará para o caminho correspondente no ../TEMP2diretório, após criar primeiro a estrutura de diretório ( install -D).

copie tudo e exclua o resto

Isso só faz sentido se você tiver apenas alguns arquivos que desejanãoquero copiar:

cp -r * ../TEMP2
find ../TEMP2 -type f \! -iname '*.mp3' -delete

Isso copia tudo e exclui todos os arquivos que não sejam arquivos mp3

informação relacionada