movendo os diretórios usando o comando find

movendo os diretórios usando o comando find

Estou tentando encontrar um diretório específico em um caminho e mover o diretório para outro caminho usando find.

O diretório de origem se parece com 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 ir para o destino

/Backup/fonte1/Dir1/

Estou usando o comando abaixo

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

e estou recebendo o erro abaixo.

mv: falha ao preservar a propriedade de `/Backup/source1/Dir1/./country1/month1/date1/date1/date1_1.txt': Operação não permitida

Não sei como remover a duplicação do diretório date1 no destino e"./"também está criando problemas.

Muitas felicidades, KJ

Responder1

OPágina de manual do Linuxafirma:

mv - mover (renomear) arquivos

Portanto, você não pode usar mvpara mover um diretório. No entanto, você pode primeiro copiá-lo e depois 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 de seu interesse, em uma variável conveniente. Agora podemos colocar o diretório na nova posição,

   mkdir /Backup/source1/$SRC_DIR

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

Agora você pode copiar recursivamente todo o conteúdo 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 for necessário:

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

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

Responder2

Em vez de usar o move, que é uma ferramenta Blunt, verifique o rsync, que pode mudar as árvores de diretórios no modo de arquivo, preservando as permissões e os links simbólicos físicos e físicos.

Além disso, se você digitar updatedbcomo root, ele atualizará o locatebanco de dados de arquivos que estão nas diversas árvores de caminhos dos pacotes instalados. Binários, páginas de manual e árvores de origem. Pesquisar com whereisou locateé muito mais rápido do que fazer a pesquisa real no disco todas as vezes.

informação relacionada