Quero mover o conteúdo de um diretório dentro de outro diretório com as mesmas pastas.
Aqui está um exemplo:
Eu tenho os ./backup
quais têm os diretórios base
e test
. Agora eu quero mover esses diretórios ./backupArchives
.
Eu uso isso:
mv ./backup/* ./backupArchives
mas eu entendi o erro
mv: cannot move './backup/base' to './backupsArchive/base': Directory not empty
Eu tentei usar --force
, mas sem sorte. Existe uma maneira de movê-lo quando as pastas já existem?
Nota: Eu só quero mesclar o conteúdo, não há substituição.
rsync
vez disso, ele fará a fusão.Respostas:
Embora sua página de manual não o documente, ela
mv
se recusará a renomear um diretório para outro diretório se o diretório de destino contiver arquivos. Isso é bom no seu caso, porque você deseja mesclar o conteúdo da fonte no destino, o quemv
não funciona.Use em
rsync -a backup/ backupArchives/
vez disso. Depois dissorm -rf backup/*
.Em vez de usar
rsync
, você também pode fazer o clássicoo que lhe dá mais pontos de geek.
fonte
rm -rf backupArchives
sem consequências, muito menos com as "horríveis".sudo sh -c '(cd backup && tar c .) | (cd backupArchives && tar xf -)'
Rápido e sujo, se você souber o que está fazendo:
fonte
Após o diretório que você está movendo, você precisa
*
(representa qualquer texto ou número). Por exemplo:isso é tudo, se você mover arquivos, será movido como:
mv /var/www/index.php /recovery/index.php
Outra maneira é compactar o conteúdo dessa pasta usando tar:
Em seguida, mova-o para qualquer outro arquivo. Também recomendo esta etapa porque o alcatrão a comprime e diminui de tamanho.
Para extrair os arquivos para outra pasta, use
Se você precisar copiar para um local que não é seu, lembre-se de acrescentar seu comando com o
sudo
comando após a opção que você decidir usar.fonte
-R
certamente não deveria ocorrer após o primeiro argumento. As opções (quase) sempre precedem os argumentos do comando. Além disso,mv
não tem-R
opção e, finalmente, a recursão é irrelevante para amv
. @DimitrisTheodoridis, teste sua resposta primeiro.Certamente
rsync
funciona, mas isso pode funcionar também para máquinas que não suportamrsync
(ou seja, no cpanel, que o rsync não está instalado por padrão).Que tal usar:
Em seguida, remova o
backup
diretório, se necessárioNota1: Você precisa acessar
cd
obackup
diretório antes de executar ocp -R --parents ...
Nota2: verifique o
backupArchives
diretório se você obteve os novos arquivos de backup.fonte
Antes de fazer a pergunta, vamos considerar um caso simplificado.
Suponha que em / home / admin tenhamos duas pastas
foo
ebar
que tenham a mesma estrutura de subdiretórios, mas cada uma contém arquivos diferentes. Agora queremos mesclá-los em um. Quando fazemos coisas assimmv foo/* bar
, o erromv: directory not empty
ocorre.Minha solução é abandonar as ferramentas de linha de comando e mudar para um gerenciador de arquivos da GUI, por exemplo, dolphin. Quando você renomeia
foo
parabar
no dolphin, ele oferece a opção de gravar na pasta de destino e pergunta se você deseja substituir os arquivos existentes, interativamente. Isso evita copiar e excluir, o que economiza seu tempo sem uma única linha de código.PS: Eu não testei todos os gerenciadores de arquivos por aí. Mas a maioria deles deve ter esse recurso.
fonte