Como movo uma subpasta com conteúdo para uma pasta de origem diferente sem copiar?

Como movo uma subpasta com conteúdo para uma pasta de origem diferente sem copiar?

Sei que isso 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 de diretórios:

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

Main Folder2
|
|-Subfolder 2 HasAReallyLongName
|---files
  • Quero tentar mover Subfolder2 com seus arquivos para um diretório diferente.
  • Não quero copiar e remover nada porque não tenho espaço suficiente.
  • Não quero mv /Main/Sub2/* /Main2/porque isso coloca tudo na /Main2pasta e não em um subdiretório.
  • Não quero mkdir /Main2/...porque é um nome muito longo (principalmente carimbos de data e hora) e não quero digitá-lo manualmente (e provavelmente bagunçar tudo)
  • Pelo que eu sei, rsynccopia os arquivos também, então não tenho certeza se funcionaria.

Qualquer sugestão ou outras ferramentas serão muito apreciadas!

Responder1

Isto é completamente simples.

mv /Main1/Sub2 /Main2

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

mv /Main/Sub* /Main2

Possíveis problemas que podem estar fazendo com que isso não funcione conforme esperado:

  • Já existe um diretório dentro /Main2com o mesmo nome de /Main1/Sub2. Isso causa o erro directory not empty, assim mvcomo a recusa em substituir o diretório existente. Se for esse o caso, primeiro renomeie (ou remova) o diretório existente /Main2:

    mv /Main2/Sub2 /Main2/SomethingElse
    
  • Usando um caminho incorreto. Lembre-se de que tudo diferencia maiúsculas de minúsculas e esteja ciente dos caminhos relativos e ~da expansão. Todos são 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 destino. Isso ficará muito óbvio na mensagem de erro: mv: cannot move 'thing' to '/place': Permission denied. Nesse caso, você pode executar meu comando favorito para superar o problema

    sudo !!
    

Responder2

Entendi: usar sudo mv /Main1/Sub2 /Main2fez isso por mim. A principal diferença é ser root, suponho.

informação relacionada