
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/Main2
pasta 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,
rsync
copia 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/Sub2
com 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
/Main2
com o mesmo nome de/Main1/Sub2
. Isso causa o errodirectory not empty
, assimmv
como 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 problemasudo !!
Responder2
Entendi: usar sudo mv /Main1/Sub2 /Main2
fez isso por mim. A principal diferença é ser root, suponho.