![movendo os diretórios usando o comando find](https://rvso.com/image/1388759/movendo%20os%20diret%C3%B3rios%20usando%20o%20comando%20find.png)
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 mv
para 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 updatedb
como root, ele atualizará o locate
banco 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 whereis
ou locate
é muito mais rápido do que fazer a pesquisa real no disco todas as vezes.