Renomeia um diretório contendo muitos arquivos

3

Eu cometi um erro em rsync e todos os arquivos foram copiados com o caminho completo. Todos os arquivos que copiei estão em

/var/www/photos/2012/1007/1007

Tentativa 1

Agora eu gostaria de corrigir os caminhos, fazendo

 mv /var/www/photos/2012/1007/1007 /var/www/photos/2012

Isso dá o erro:

mv: cannot move '/var/www/photos/2012/1007/1007' to '/var/www/photos/2012/1007': Directory not empty

Tentativa 2

 mv /var/www/photos/2012/1007/1007/* /var/www/photos/2012/1007

Eu recebo o erro:

-bash: /bin/mv: Argument list too long

Pergunta: Qual será a maneira correta de renomear a pasta que contém muitos arquivos?

Os arquivos foram realmente copiados para /var/www/photos/2012/1007/home/photos/public_html/2012/1007 , mas de alguma forma eu os obtive para /var/www/photos/2012/1007/1007

Rsync cmd:

rsync -zavrR --rsh="ssh -c arcfour -l root -p 2200" www.mydomain.com:/home/photos/public_html/2012/1007 /var/www/photos/2012/1007

    
por Nyxynyx 11.10.2012 / 19:50

2 respostas

2

Isso funcionou no meu teste com os caminhos que você deu:

cd /var/www/photos
mv 2012 old
mv old/1007/1007 .
mv 1007 2012

O que está acontecendo é que você está tentando mover um diretório por cima de um diretório existente - e não gosta de fazer isso porque há coisas no diretório. Ao renomear 2012 primeiro, você pode movê-lo sem problemas.

    
por 11.10.2012 / 19:56
1

Pelo menos duas maneiras em que consigo pensar:

1: Primeiro renomeie / var / www / photos / 2012/1007 para / var / www / photos / 2012 / temppath e, em seguida, mv / var / www / photos / 2012 / temppath / 1007 - > / var / www / photos / 2012 /, em seguida, rmdir / var / www / photos / 2012 / temppath.

2: Use um script simples para mover o conteúdo:

for f in 'find /var/www/photos/2012/1007/1007 -mindepth 1'; do mv $f /var/www/photos/2012/1007/1007/../; done

Primeiro método, provavelmente, uma resposta melhor à sua pergunta.

    
por 11.10.2012 / 20:04