Como faço para mover uma subpasta com conteúdo para uma pasta de origem diferente sem copiar?

2

Eu sei que já foi perguntado um milhão de vezes, mas não consigo encontrar a resposta para o que estou tentando fazer especificamente.

Aqui está a estrutura do diretório:

Main Folder1
|
|-Subfolder 1
|-Subfolder 2 HasAReallyLongName
|---files
|-Subfolder 3-1000

Main Folder2
|
|-Subfolder 2 HasAReallyLongName
|---files
  • Eu quero tentar mover a Subpasta2 com seus arquivos para um diretório diferente.
  • Eu não quero copiar e remover nada porque não tenho espaço suficiente.
  • Eu não quero mv /Main/Sub2/* /Main2/ porque isso coloca tudo na pasta /Main2 e não em um subdiretório.
  • Eu não quero mkdir /Main2/... porque é um nome muito longo (principalmente timestamps) e não quero digitá-lo manualmente (e provavelmente atrapalhar)
  • Até onde eu sei, rsync copia os arquivos também, então não tenho certeza se funcionaria.

Qualquer sugestão ou outras ferramentas seriam muito apreciadas!

    
por mktoaster 25.07.2014 / 22:24

2 respostas

2

Isso é completamente simples.

mv /Main1/Sub2 /Main2

Isso cria o diretório /Main2/Sub2 com todo o conteúdo do original e exclui o diretório /Main1/Sub2 . Se você não quiser digitar o nome completo, você pode usar um glob; apenas pare de digitar o nome e termine com * quando tiver digitado caracteres suficientes para distinguir o nome do diretório de tudo o mais no diretório (tenha cuidado!):

mv /Main/Sub* /Main2

Possíveis problemas que podem estar causando o não funcionamento esperado:

  • Já existe um diretório dentro de /Main2 com o mesmo nome de /Main1/Sub2 . Isso causa o erro directory not empty , pois mv está se recusando a sobrescrever o diretório existente. Se esse for o caso, renomeie (ou remova) o diretório existente em /Main2 first:

    mv /Main2/Sub2 /Main2/SomethingElse
    
  • Usando um caminho incorreto. Lembre-se de que tudo é sensível a maiúsculas e minúsculas e deve estar ciente dos caminhos relativos e ~ de expansão. Estes são todos diferentes dependendo do diretório de trabalho atual

    /Main1/Sub2
    Main1/Sub2
    ~/Main1/Sub2
    
  • Você não tem permissão para gravar no diretório de origem e / ou de destino. Isso será muito óbvio a partir da mensagem de erro: mv: cannot move 'thing' to '/place': Permission denied . Nesse caso, você pode executar o meu comando favorito para superar o problema

    sudo !!
    
por Zanna 10.12.2016 / 21:37
-1

Entendi: Usando sudo mv /Main1/Sub2 /Main2 fiz isso para mim. A principal diferença é ser raiz, suponho.

    
por mktoaster 25.07.2014 / 22:55