movendo os diretórios usando o comando find

0

Estou tentando encontrar um determinado diretório em um caminho e mover o diretório em outro caminho usando o find.

O diretório de origem é exibido abaixo,

/Dir1/country1/month1/date1,date2,date3
/Dir1/country2/month1/date1,date2,date3
...
.
.
/Dir1/country10/month1/date1,date2,date3

Estou tentando encontrar o diretório date1 e mover para o destino

/Backup/source1/Dir1/

Estou usando o comando abaixo

[root@mytest Dir1]# find -name "date1" -exec mv {} /Backup/source1/Dir1/{} \;

e estou ficando abaixo do erro.

mv: failed to preserve ownership for '/Backup/source1/Dir1/./country1/month1/date1/date1/date1_1.txt': Operation not permitted

Não sabe como remover a duplicação de date1 Directory no destino e "./" também está criando problemas.

Felicidades, KJ

    
por KumarJohn 08.12.2013 / 06:35

2 respostas

0

A página do Linux Man afirma:

mv - move (rename) files

Assim, você não pode usar mv para mover um diretório. Você pode, no entanto, copiá-lo primeiro, em seguida, apagar a cópia antiga.Este comando

   SRC_DIR=$(find . -type d -name date1 -print); echo $SRC_DIR

armazenará o caminho relativo para o diretório em que você está interessado, em uma variável conveniente. Agora podemos fazer o diretório na nova posição,

   mkdir /Backup/source1/$SRC_DIR

desde que você tenha a autoridade para fazê-lo: na verdade, a mensagem de erro acima é sobre ter privilégios insuficientes para criar um novo arquivo (deveria ter sido uma pasta, mas se tornou um arquivo devido ao erro acima). Você tem certeza que o novo / Backup / dir1 pertence a você? Você deve verificar isso e consertá-lo.

Agora você pode copiar todo o conteúdo recursivamente para o novo diretório:

   cp -R $SRC_DIR/* /Backup/dir1/$SRC_DIR
   cp -R $SRC_DIR/.[a-Z]* /Backup/dir1/$SRC_DIR

e, por último, você pode apagar a cópia antiga, se precisar:

   cd $SRC_DIR
   rm -fR *
   rm -fR .[a-Z]* 

e agora o diretório está vazio e pode ser apagado.

    
por 08.12.2013 / 06:54
0

Em vez de usar o move, que é uma ferramenta Blunt, confira o rsync, que pode alterar as árvores de diretórios no modo de arquivamento, o que preserva as permissões e as propriedades soft & links simbólicos difíceis.

Além disso, se você digitar updatedb como root, ele atualizará o banco de dados locate dos arquivos que estão nas várias árvores de caminho dos pacotes instalados. Binários, man pages e árvores de origem. A pesquisa com whereis ou locate é muito mais rápida do que a pesquisa real de disco de cada vez.

    
por 17.04.2016 / 06:55

Tags